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

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?


天涯尽头无女友
浏览 109回答 1
1回答

翻过高山走不出你

您应该从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它仍然是一个空的{}。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript