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
例如,如果kis11并且当前项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
提交
取消
