题目描述:
双指针
我们使用两个指针,初始分别位于第一个元素和最后一个元素位置,比较这两个元素之和与目标值的大小。如果和等于目标值,我们发现了这个唯一解。如果比目标值小,我们将较小元素指针增加一。如果比目标值大,我们将较大指针减小一。移动指针后重复上述比较直到找到答案。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int left = 0,right = numbers.size() - 1;
while(left < right)
{
if(target == numbers[left] + numbers[right])
{
return {left + 1,right + 1};
}
else if(target > numbers[left] + numbers[right])
{
++left;
}
else if(target < numbers[left] + numbers[right])
{
--right;
}
}
return {-1,-1};
}
};