解题思路:双指针 l 和 r,分别指向头和尾,对于这个有序数组,如果number[l] + number[r] 比 target大
,那么说明选择的r对应元素偏大,将指针 r 左移;如果小于target ,那么相应的将指针 l 右移,直到两者相等!
vector<int> twoSum(vector<int> &numbers, int target)
{
vector<int> res;
int len = numbers.size();
if (len == 0)
return res;
int l = 0, r = len - 1;
while (l < r)
{
if (numbers[l] + numbers[r] == target)
{
res.push_back(l + 1);
res.push_back(r + 1);
break;
}
if (numbers[l] + numbers[r] > target)
{
r--;
continue;
}
if (numbers[l] + numbers[r] < target)
{
l++;
continue;
}
}
return res;
}