为了账号安全,请及时绑定邮箱和手机立即绑定

数字数组和数字 k,返回数组中任意两个数字之和是否为 k

数字数组和数字 k,返回数组中任意两个数字之和是否为 k

天涯尽头无女友 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 推导出 2 个整数之和的arr?
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您应该从else块开始读取它,然后再从if块开始读取。

所做hashMap[k - value] = true的就是跟踪我们需要使用数组的k当前项获得的数字。value

例如,如果kis11并且当前项value7,则将hashMap变为{ "4": true },这意味着我们正在寻找 a 4(因为7 + 4 == 11)。如果下一个value3,则hashMap变为,这意味着我们此时{ "4": true, "8": true }正在寻找 或4, ...8

现在,我们回到该if块,该块只是检查当前是否value是我们正在查找的数字之一(上面示例中的the4或 the )。8如果是这样,我们立即返回,true因为我们已经找到了两个相加的数字,k因此无需继续搜索。请注意,对于循环的第一次迭代,if无论如何都无法输入此块,因为hashMap它仍然是一个空的{}


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信