Loading

【leetcode】167. Two Sum II - Input Array Is Sorted

  Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= index1 < index2 <= numbers.length. Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2. The tests are generated such that there is exactly one solution. You may not use the same element twice.

   

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        int len=numbers.size();
        vector<int> res;
        bool flag=false;
        //排序数组 压缩搜索路劲
        int left=0,right=len-1;
        while(left<right)
        {
            if(numbers[left]+numbers[right]>target)
            {
                right--;
                //continue;
            }
            else if(numbers[left]+numbers[right]<target)
            {
                left++;
                //continue;
            }
            else
            {
                flag=true;
                break;
            }
        }
        if(flag)
        {
            res={left+1,right+1};
        }
        return res;
        
    }
};

 

posted @ 2021-11-19 21:23  aalanwyr  阅读(24)  评论(0编辑  收藏  举报