两数之和:给定数组 nums 与目标 target,返回和为 target 的两个元素下标。

思路:用哈希表存「值 → 下标」,遍历时查互补值是否存在,把 O(n^2) 降到 O(n)。

function twoSum(nums, target) {
  const map = new Map()
  for (let i = 0; i < nums.length; i++) {
    const need = target - nums[i]
    if (map.has(need)) return [map.get(need), i]
    map.set(nums[i], i)
  }
  return []
}

同分类其他题目