leetcode 8

设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。

示例 1:

输入: nums = [5,6,5], target = 11
输出: [[5,6]]
示例 2:

输入: nums = [5,6,5,6], target = 11
输出: [[5,6],[5,6]]
提示:

nums.length <= 100000

class Solution {
public:
    vector<vector<int>> pairSums(vector<int>& nums, int target) {
    //排序,双指针解法
    vector<vector<int>> ans;
    if(nums.size()<2)
    return ans;
    sort(nums.begin(),nums.end());
    int i=0,j=nums.size()-1;
    while(i<j)
    {
        int sum=nums[i]+nums[j];
        if(sum<target)
        {
            i++;
        }
        else if(sum>target)
        {
            j--;
        }
        else{
            vector<int> temp;
            temp.push_back(nums[i]);
            temp.push_back(nums[j]);
            ans.push_back(temp);
            i++;
            j--;
                    }
    }
    return ans;
    }
};

注意:练习双指针的使用。

posted @ 2020-08-09 15:38  zmachine  阅读(149)  评论(0编辑  收藏  举报