题目:
给定一个已按照升序排列的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。下标从1开始计数。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 =
思路:
- 采用双指针记录数组的最左和最右下标;
- 两者之和等于target,返回下标;
- 两者之和大于target,右下标左移;
- 两者之和小于target,左下标右移。
代码:
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
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+1,right+1]
}else if(sum>target){
right--
}else{
left++
}
}
};