输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
对撞双指针,i从左到右,j从右到左,不断比较两者之和于s的大小,小了就i++,大了就j++。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i=0,j=nums.size()-1;
while(i!=j){
if((nums[i]+nums[j])<target)i++;
else if((nums[i]+nums[j])>target)j--;
else{
return {nums[i],nums[j]};
}
}
return {};
}
};