给定一个已按照升序排列的整数数组 nums,请你从数组中找出两个数满足相加之和等于目标数组 target。假设每个输入只对应唯一的答案,不可以重复使用相同的元素。
函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers的下标从 1 开始计数,所以答案数组应当满足 1 <= answer[0] <= answer[1] <= numbers.length.
- 时间复杂度O(N),空间复杂度O(1)
- Runtime: 72 ms, faster than 81.35%
- Memory Usage: 39.2 MB, less than 69.65%
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
var twoSum = function(numbers, target) {
let low = 0;
let high = numbers.length - 1;
while (low < high) {
let sum = numbers[low] + numbers[high];
if (sum === target) {
return [low + 1, high + 1];
} else if (sum < target) {
low++;
} else {
high--;
}
}
return [-1, -1];
};
网友评论