LeetCode刷题---两数之和---输入有序数组

题目描述:
LeetCode刷题---两数之和---输入有序数组_第1张图片
双指针

我们使用两个指针,初始分别位于第一个元素和最后一个元素位置,比较这两个元素之和与目标值的大小。如果和等于目标值,我们发现了这个唯一解。如果比目标值小,我们将较小元素指针增加一。如果比目标值大,我们将较大指针减小一。移动指针后重复上述比较直到找到答案。

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};
    }
};

你可能感兴趣的:(LeetCode,两数之和)