18. 4Sum--Array--LeetCode--C++

来源:互联网 发布:linux oracle服务状态 编辑:程序博客网 时间:2024/05/01 09:13

99ms, 43%

class Solution {public:    vector<vector<int>> fourSum(vector<int>& nums, int target)     {        vector<vector<int>> ret;        int sz = nums.size();        if(sz < 4)            return ret;        std::sort(nums.begin(), nums.end());        /*        // 不需要了        if((nums[0] == 0) && (nums[1] == 0) && (nums[2] == 0) && (nums[3] == 0))        {            vector<int> curr;            curr.push_back(0);            curr.push_back(0);            curr.push_back(0);            curr.push_back(0);            ret.push_back(curr);            return ret;        } */                for(int i = 0; i < sz - 3; ++i)             // O(N3)        {            if(i > 0 && nums[i] == nums[i - 1])     // 跳过重复的nums[i]                continue;            for(int j = i + 1; j < sz - 2; ++j)     // O(N3)            {                if(j > i + 1 && nums[j] == nums[j - 1]) // 跳过重复的nums[j]                    continue;                int k = j + 1;                int l = sz - 1;                 while(k < l)                        // O(N3)                {                    int sum = nums[i] + nums[j] + nums[k] + nums[l];                    if(sum == target)                    {                        vector<int> curr;                        curr.push_back(nums[i]);                        curr.push_back(nums[j]);                        curr.push_back(nums[k]);                        curr.push_back(nums[l]);                        ret.push_back(curr);                                                do{++k;}                        while(k < l && nums[k] == nums[k - 1]);// 跳过重复的nums[k]                        do{--l;}                        while(k < l && nums[l] == nums[l + 1]);// 跳过重复的nums[l]                    }                    else if(sum < target)                    {                        ++k;                    }                    else if(sum > target)                    {                        --l;                    }                }            }        }        return ret;    }};


0 0
原创粉丝点击