數(shù)組有序,通過雙指針求和,雙指針先位于兩端
如果等于目標值,則返回
小于目標值,需要增大,所以左指針自增
大于目標值,需要減少,所以右指針自減
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> r;
int n = numbers.size();
for (int i = 0, j = n - 1; i < j;)
{
int sum = numbers[i] + numbers[j];
if (sum == target)
{
r.push_back(i + 1);
r.push_back(j + 1);
break;
}
else if (sum > target)
{
--j;
}
else
{
++i;
}
}
return r;
}
};