输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
思路:
因为是递增排序数组,所以可以定义两个下标,一左一右,左边指向开端,右边指向末尾。看这两个下标指向的数之和跟target进行比较,如果相等,则找到了。如果大于target,右边下标减一。如果小于target,左边下标加一。
代码:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int len = nums.size();
int left = 0,right = len-1;
while(left<right) {
int sum = nums[left]+nums[right];
if(sum == target) {
return {nums[left],nums[right]};
}
else if(sum > target) {
right--;
}
else {
left++;
}
}
return {};
}
};