Leetcode

LeetCode #18 四数之和

2020-02-09  本文已影响0人  HU兔兔
class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        vector<vector<int>> ans;
        if(nums.size()<4){
            return ans;
        }
        sort(nums.begin(),nums.end());
        int i,j,k,l,t;
        i=0;
        while(i<nums.size()-3){
            j=i+1;
            while(j<nums.size()-2){
                k=j+1;
                l=nums.size()-1;
                t=target-nums[i]-nums[j];
                while(k<l){
                    if(nums[k]+nums[l]==t){
                        ans.push_back({nums[i],nums[j],nums[k],nums[l]});
                        do{
                            k++;
                        }while(nums[k-1]==nums[k]&&l>k);
                        do{
                            l--;
                        }while(nums[l+1]==nums[l]&&l>k);
                    }
                    else{
                        if(nums[k]+nums[l]>t){
                            l--;
                        }
                        else{
                            k++;
                        }
                    }
                }
                do{
                    j++;
                }while(nums[j-1]==nums[j]&&j<nums.size()-2);
            }
            do{
                i++;
            }while(nums[i-1]==nums[i]&&i<nums.size()-3);
        }
        return ans;
    }
};
上一篇下一篇

猜你喜欢

热点阅读