面试题 16.24. 数对和

面试题 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;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43599304/article/details/121375310