# 两数之和II-输入有序数组 (opens new window)
- 难度:Easy
- 标签:Map 双指针
# 刷题思路
- [x] Map 暂存
- [x] 双指针夹逼
# 方法 1 Map 暂存
- 复杂度:
- 时间 O(n)
- 空间 O(n). 借助额外空间 Map
- 结果:
- 执行用时:88 ms, 在所有 JavaScript 提交中击败了65.31%的用户
- 内存消耗:38.2 MB, 在所有 JavaScript 提交中击败了8.75%的用户
var twoSum = function(numbers, target) {
let map = new Map()
for (let i=0, len=numbers.length; i<len; i++) {
if (map.has(numbers[i])) {
return [map.get(numbers[i])+1, i+1]
} else {
map.set(target-numbers[i], i)
}
}
};
# 方法 2 双指针夹逼
- 复杂度:
- 时间 O(n)
- 空间 O(1)
- 结果:
- 执行用时:84 ms, 在所有 JavaScript 提交中击败了78.33%的用户
- 内存消耗:37.8 MB, 在所有 JavaScript 提交中击败了18.04%的用户
var twoSum = function(numbers, target) {
let [left, right] = [0, numbers.length-1]
while (left < right) {
const res = numbers[left] + numbers[right]
if (res === target) {
return [left+1, right+1]
} else if (res < target) {
left++
} else {
right--
}
}
};
JS刷题记录 Leetcode-js (opens new window) 每周都会更新刷题心得或者题解, 你的点赞或 star 都将助力我产出更好内容~