剑指offer57.1 和为S的两个数字
输入一个数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。
如果有多对数字的和等于s,输出任意一对即可。
你可以认为每组输入中都至少含有一组满足条件的输出。
样例
输入:[1,2,3,4] , sum=7
输出:[3,4]
思路:
先对数组快速排序,然后双指针法从前往后和从后往前遍历链表。
AcWing-75 C++ code:
class Solution {
public:
vector<int> findNumbersWithSum(vector<int>& nums, int target) {
if(nums.size() < 2){
return {};
}
sort(nums.begin(), nums.end());
int left = 0;
int right = nums.size() - 1;
while(right > left){
if(nums[left] + nums[right] == target){
return {nums[left], nums[right]};
}else if(nums[left] + nums[right] > target){
right--;
}else{
left++;
}
}
return {};
}
};