1、题目描述
输入一个递增的数组和一个target。输出两个元素的索引使得两元素之和等于target。
2、思路
Two Pointers。
i指向数组头,j指向数组尾巴。
nums[i] + nums[j] > target, j--;
nums[i] + nums[j] < target, i++;
nums[i] + nums[j] == target, return i and j.
复杂度 O(n)
3、代码
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int>v;
int n = numbers.size();
for(int i=0,j=n-1;i<j;){
if(numbers[i]+numbers[j]==target){
v.push_back(i+1);
v.push_back(j+1);
return v;
}
else if(numbers[i]+numbers[j]<target)
i++;
else
j--;
}
return v;
}
};