剑指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 {};
}
};
本文介绍了一种高效的算法,用于在数组中查找两个数,使其和等于给定的目标值。通过快速排序和双指针技术,该算法能在O(n log n)的时间复杂度内解决问题。示例输入为[1,2,3,4],目标和为7,输出为[3,4]。
4930

被折叠的 条评论
为什么被折叠?



