Leetcode 第15题

vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> res;
        if(nums.size()<=2)return res;
        sort(nums.begin(),nums.end());
        for(int n=0;n<nums.size()-2;n++)
        {
            if(nums[n]>0)break;
            if(n>0&&nums[n-1]==nums[n])continue;
            int target=-nums[n];
            int i=n+1,j=nums.size()-1;
            while(i<j)
            {
                if(nums[i]+nums[j]==target)
                {
                    res.push_back({nums[n],nums[i],nums[j]});
                    while(i<j&&nums[i]==nums[i+1])i++;
                    while(i<j&&nums[j]==nums[j-1])j--;
                    i++;j--;
                }
                else if(nums[i]+nums[j]>target)j--;
                else i++;
            }
        }
        return res;
    }

猜你喜欢

转载自blog.csdn.net/TempterCyn/article/details/82871319