题目
解析
使用左右指针。
- 如果两指针执行的元素和 sum === target,那么返回结果
- 如果 sum > target, 右指针减一,使sum变小些
- 如果 sum < target, 左指针加一,使sum变大些
var twoSum = function (numbers, target) {
if (numbers.length < 2) {
return [];
}
let left = 0;
let right = numbers.length - 1;
const arr = [];
while (left < right) {
let sum = numbers[left] + numbers[right];
if (sum === target) {
arr.push(left + 1, right + 1);
return arr;
} else if (sum < target) {
left++;
} else {
right--;
}
}
return [];
};