解题思路:
因为数组本身是有序的,所以比较简单。定义两个指针,分别指向数组的头部和尾部。
偏大的话,就将尾部指针向前移一位;
偏小的话,就将头部指针向后移一位。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
//定义两个指针 i,j,分别指向头部和尾部
int i = 0;
int j = numbers.size() - 1;
vector<int> res;
while(i < j){
if(numbers[i] + numbers[j] == target){
res.push_back(i+1);
res.push_back(j+1);
return res;
}
else if(numbers[i] + numbers[j] > target) //偏大
j--;
else i++; //偏小了
}
return {};
}
};