LeetCode题解:1. 两数之和,JavaScript,HashMap单词遍历,详细注释

279 阅读1分钟

原题链接: leetcode-cn.com/problems/tw…

解题思路:

  1. 遍历数组,每次保存target - nums[index]和index。
  2. 下次遍历时,如果在Map中找到了target - nums[index],就表示找到了两个数的和为target。
  3. 此时可以直接从Map中取出保存的index,与当前值的index组合则为结果。
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  // 用Map保存已遍历的index结果
  let map = new Map();

  for (let index = 0; index < nums.length; index++) {
    // 判断当前值是否已在Map中存储,如果有就表示找到了两个数可以想加等于target
    if (typeof map.get(nums[index]) === 'number') {
      // 返回已保存的index和当前值的index
      return [map.get(nums[index]), index];
    }
    // 将当前值与target的差,以及当前值的index保持在Map
    // 当遍历到target - nums[index],就表示找到了两数之和为target,可以直接把当前的index取出
    map.set(target - nums[index], index);
  }
};