LeetCode 167 两数之和 II
🟡 中等
https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/
首先, 可以使用暴力的方法, 遍历开始和结束, 复杂度 n*n; 这样没有使用到递增这个条件. 首先left在最左边, right在最右边, 如果和大于target, 这说明右边的值太大了, 它和最小的值(left) 之和都大于target, 因此放弃最右边的, right减一; 如果小于target, 说明左边的太小了, 因此要left加一; 如此下去直到找到等于的。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int left = 0;
int right = numbers.size()-1;
while(left<right){
int sum = numbers[left]+numbers[right];
if(sum==target){
return {left+1,right+1};
}
if(sum>target) right--;
if(sum<target) left++;
}
return {};
}
};