167. 两数之和 II - 输入有序数组
解题思路:因为是数组是有序的,所以可以使用双指针。
定义i=0,j=numbers.size()-1,如果numsber[i],numsber[j]相加=target,返回结果;如果numsber[i],numsber[j]相加<target,去掉最小的数;如果numsber[i],numsber[j]相加>target,去掉最大的树
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
//如果numsber[i],numsber[j]相加=target,返回结果
//如果numsber[i],numsber[j]相加<target,去掉最小的数
//如果numsber[i],numsber[j]相加>target,去掉最大的树
vector<int> result;
int i = 0;
int j=numbers.size()-1;
while(1){
if(numbers[i]+numbers[j]==target){
result.push_back(i+1);
result.push_back(j+1);
break;
}
if(numbers[i]+numbers[j]<target){
i++;
}
if(numbers[i]+numbers[j]>target){
j--;
}
}
return result;
}
};