天涯盡頭無女友
2023-07-06 14:47:39
findSums(arr, k) { let hashMap hashMap = {}; for (let value of arr) { if (hashMap[value]) { return true; } else { hashMap[k - value] = true }; } return false;}我有點困惑這個功能是如何工作的。hashMap[k - value]該位到底是如何用 k 推導(dǎo)出 2 個整數(shù)之和的arr?
1 回答

翻過高山走不出你
TA貢獻1875條經(jīng)驗 獲得超3個贊
您應(yīng)該從else
塊開始讀取它,然后再從if
塊開始讀取。
所做hashMap[k - value] = true
的就是跟蹤我們需要使用數(shù)組的k
當(dāng)前項獲得的數(shù)字。value
例如,如果k
is11
并且當(dāng)前項value
是7
,則將hashMap
變?yōu)?code>{ "4": true },這意味著我們正在尋找 a 4
(因為7 + 4 == 11
)。如果下一個value
是3
,則hashMap
變?yōu)椋@意味著我們此時{ "4": true, "8": true }
正在尋找 或4
, ...8
現(xiàn)在,我們回到該if
塊,該塊只是檢查當(dāng)前是否value
是我們正在查找的數(shù)字之一(上面示例中的the4
或 the )。8
如果是這樣,我們立即返回,true
因為我們已經(jīng)找到了兩個相加的數(shù)字,k
因此無需繼續(xù)搜索。請注意,對于循環(huán)的第一次迭代,if
無論如何都無法輸入此塊,因為hashMap
它仍然是一個空的{}
。
添加回答
舉報
0/150
提交
取消