面试题 16.24. 数对和
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。
示例 1:
输入: nums = [5,6,5], target = 11
输出: [[5,6]]
示例 2:
输入: nums = [5,6,5,6], target = 11
输出: [[5,6],[5,6]]
class Solution {
public:
vector<vector<int>> pairSums(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
vector<vector<int>> res;
int left = 0, right = nums.size() - 1;
while(left < right){
if(nums[left] + nums[right] == target){
res.push_back(vector<int>{nums[left], nums[right]});
++left;
--right;
} else if(nums[left] + nums[right] > target){
--right;
} else{
++left;
}
}
return res;
}
};