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 推导出 2 个整数之和的arr?
1 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
您应该从else
块开始读取它,然后再从if
块开始读取。
所做hashMap[k - value] = true
的就是跟踪我们需要使用数组的k
当前项获得的数字。value
例如,如果k
is11
并且当前项value
是7
,则将hashMap
变为{ "4": true }
,这意味着我们正在寻找 a 4
(因为7 + 4 == 11
)。如果下一个value
是3
,则hashMap
变为,这意味着我们此时{ "4": true, "8": true }
正在寻找 或4
, ...8
现在,我们回到该if
块,该块只是检查当前是否value
是我们正在查找的数字之一(上面示例中的the4
或 the )。8
如果是这样,我们立即返回,true
因为我们已经找到了两个相加的数字,k
因此无需继续搜索。请注意,对于循环的第一次迭代,if
无论如何都无法输入此块,因为hashMap
它仍然是一个空的{}
。
添加回答
举报
0/150
提交
取消