一、题目地址
https://leetcode-cn.com/problems/kLl5u1/
二、具体代码
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
// 1、两数之和做法
// 时间复杂度O(n)
// 空间复杂度O(n)
var twoSum = function(numbers, target) {
let map = new Map();
for(let i=0; i<numbers.length; i++) {
let value = target - numbers[i];
if(map.has(value)) {
return [map.get(value), i];
}else {
map.set(numbers[i], i);
}
}
return res;
};
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
// 2、双指针做法
// 时间复杂度O(n)
// 空间复杂度O(1)
var twoSum = function(numbers, target) {
let left = 0;
let right = numbers.length - 1;
while(left < right) {
let sum = numbers[left] + numbers[right];
if(sum === target) {
return [left, right];
}else if(sum < target) {
left++;
}else {
right--;
}
}
return [];
};