2016-05-20 24 views
0

元素我有關於在該問題的代碼和它的在http://articles.leetcode.com/finding-minimum-window-in-s-which中尋找最小窗口S中包含了所有在T

在該圖中下面的代碼溶液(不是圖上圖)的一個具體問題,從環

if (hasFound[S[end]] <= needToFind[S[end]]) **// WHY this condition is required???** 
    count++; 

根據我的理解

1)的代碼,5日線這一點,如果沒有必要的條件,只是(每當發現一個char只是增加數代表字符的#迄今發現的)

count++; 

2)或可<的(而不是<=)和平等似乎並沒有什麼意義,我

if (hasFound[S[end]] < needToFind[S[end]]) 
    count++; 

我測試1)和2),但他們都沒有給我正確答案的所有情況。

if條件與<=)給我所有情況下的正確解決方案。

我真的不明白爲什麼

if (hasFound[S[end]] <= needToFind[S[end]]) 

應按規定正確使此代碼工作的所有情況。

回答

0

試想一下,圖案T包含3個字符A和2個字符B.
所以needToFind['A'] = 3
而且你要增量次數,當hasFound['A']變爲1,2和3

hasFound['A']只變成2(你主張關於「<」),窗口包含只有兩個字符,就不可能使T,以及數從未達到tLen=5

如果去掉這個條件在所有5個字符一個給count=5=tlen,而窗口仍然不包含y B

+0

非常感謝。現在我完全理解它。 – user2761895

相關問題