# 两数之和 (opens new window)

  • 难度:Easy
  • 标签:Map

# 刷题思路

  • [x] 双重遍历
  • [x] Map暂存

# 方法 1 双重遍历

  • 复杂度:
    • 时间 O(N^2)
    • 空间 O(N^2)
var twoSum = function(nums, target) {
    const len = nums.length
    for (let i=0; i<len; i++) {
        for (let j=i+1; j<len; j++) {
            if (nums[i] + nums[j]===target && i!==j) {
                return [i, j]
            }
        }
    }
};

# 方法 2 Map暂存

  • 复杂度:
    • 时间 O(N). 一次遍历.
    • 空间 O(N)
var twoSum = function(nums, target) {
    const map = new Map()
    for (let i=0, len=nums.length; i<len; i++) {
        if (map.has(nums[i])) {
            return [map.get(nums[i]), i]
        } else {
            map.set(target-nums[i], i)
        }
    }
};

JS刷题记录 Leetcode-js (opens new window) 每周都会更新刷题心得或者题解, 你的点赞或 star 都将助力我产出更好内容~