1 回答

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
sum
- 是我們想要達(dá)到的數(shù)字
cur_sum
- 是到目前為止數(shù)組中所有元素的總和
比如說cur_sum - sum = x
我們在開始時更新的每個步驟cur_sum
,如果讓您感到困惑的條件評估為false
我們更新哈希圖并繼續(xù)。
到目前為止,一切都很好。
現(xiàn)在,為什么我們要查看是否x
已經(jīng)在哈希圖中?
答案是,如果有一個先前的索引i
,其中直到該索引(包括)的所有元素的總和為x
,這意味著從索引i+1
到當(dāng)前索引,我們有一個子數(shù)組,其總和為:cur_sum - x
并且因為我們已經(jīng)知道這cur_sum - sum = x
意味著從i+1
當(dāng)前索引開始和結(jié)束的子數(shù)組總和恰好為sum
.
讓我們以您發(fā)布的示例為例:
Array = [2,6,0,9,7,3,1,4,1,10] X = 15 Output = [1,3]
讓我們迭代數(shù)組:
索引 0:sum 2 => 使用 (0:2)
索引 1 更新地圖:sum 2+6=8 => 使用 (1:8)
索引 2 更新地圖:sum 2+6+0 =8 => 用 (2:8)
索引 3 更新地圖:總和 2+6+0+9=17 =>
但是現(xiàn)在我們可以看到映射已經(jīng)包含 17-15=2 (0:2) 因此我們知道從索引 1 開始的子數(shù)組的總和(索引 1 在 (0:2) 的零之后)并結(jié)束于當(dāng)前索引:3 - 這個子數(shù)組總和為 15。
添加回答
舉報