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