4Sum

来源:互联网 发布:unity3d制作2d酷跑 编辑:程序博客网 时间:2024/05/06 06:28
class Solution {public:    vector<vector<int>> fourSum(vector<int>& nums, int target)     {        int size=nums.size();        vector<vector<int>> result;        vector<int> cur;        if(size<4)            return result;        sort(nums.begin(),nums.end());        for(int i=0;i<=size-4;++i)        {            while(i<=size-4&& i>0 && nums[i]==nums[i-1])                ++i;            for(int j=i+1;j<=size-3;++j)            {                while(j<=size-3&&j>i+1 && nums[j]==nums[j-1])                    ++j;                int index1=j+1;                int index2=size-1;                while(index1<index2)                {                    int sum=nums[i]+nums[j]+nums[index1]+nums[index2];                    if(sum==target)                    {                        cur.push_back(nums[i]);                        cur.push_back(nums[j]);                        cur.push_back(nums[index1]);                        cur.push_back(nums[index2]);                        result.push_back(cur);                        cur.clear();                        ++index1;                        --index2;                        while(index1<index2 && nums[index1]==nums[index1-1])                            ++index1;                        while(index1<index2 && nums[index2]==nums[index2+1])                            --index2;                                            }                    else if(sum>target)                    {                        --index2;                        while(index1<index2 && nums[index2]==nums[index2+1])                            --index2;                    }                    else                    {                        ++index1;                        while(index1<index2 && nums[index1]==nums[index1-1])                            ++index1;                    }                }            }        }        return result;    }};

0 0
原创粉丝点击