美文网首页
LC18 4 Sum

LC18 4 Sum

作者: Rookie118 | 来源:发表于2020-07-26 08:29 被阅读0次

本题链接:4 Sum

本题标签:ArrayTwo PointersHash Table

本题难度:\color{Orange}{Medium}

英文题目 中文题目

方案1:

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        if(nums.size() < 4)
            return vector<vector<int>>();
        
        vector<vector<int>> res;
        sort(nums.begin(), nums.end());
        for(int i = 0; i <= nums.size() - 4; ++i)
        {
            int three_target = target - nums[i];
            for(int j = i + 1; j < nums.size(); ++j)
            {
                int left = j + 1, right = nums.size() - 1;
                while(left < right)
                {
                    if(nums[left] + nums[right] + nums[j] < three_target)
                        ++left;
                    else if(nums[left] + nums[right] + nums[j] > three_target)
                        --right;
                    else
                    {
                        vector<int> temp(4, 0);
                        temp[0] = nums[i];
                        temp[1] = nums[j];
                        temp[2] = nums[left];
                        temp[3] = nums[right];
                        res.push_back(temp);
                        
                        while(left < right && nums[left] == temp[2])
                            ++left;
                        
                        while(left < right && nums[right] == temp[3])
                            --right;
                    }
                }
                while(j < nums.size() - 1 && nums[j] == nums[j+1])
                    ++j;
            }
            while(i <= nums.size() - 4 && nums[i] == nums[i+1])
                    ++i;
        }
        
        return res;
    }
};

时间复杂度:O ( N logN )

空间复杂度:O ( N )


相关文章

  • LC18 4 Sum

    本题链接:4 Sum 本题标签:Array,Two Pointers,Hash Table 本题难度: 方案1: ...

  • two sum&&three sum&&four sum&&th

    two sum 3 sum 3Sum Closest 4 sum 利用set来实现: 3 sum 4 sum

  • PowerBI DAX CALCULATE/SUM/COUNT/

    SUM CALCULATE(SUM...) COUNT 4.COUNTROWS COUNTBLANK 计算空值的个数

  • 二维数组

    sum()的函数原型:int sum( int (*ar2)[4], int size );//传递一个指向由 4...

  • 写一个sum函数使得以下表达式的值正确

    sum(1,2,3).sumOf();//6sum(2,3)(2).sumOf();//7sum(1,2,3,4)...

  • 4 sum

    4 sum Given an array nums of n integers and an integer ta...

  • 4 sum

    solution 1: sort the array, then fix two,using two pointe...

  • 4 Sum

    题目 Given an array S of n integers, are there elements a, ...

  • 4 sum

    解题报告, 这个做的比较绝望, 用了two points, recursion, memorization= =,...

  • 15+18、3Sum 4Sum

    15、3Sum Example 复杂度 思路 解法 18、4Sum Example 解法

网友评论

      本文标题:LC18 4 Sum

      本文链接:https://www.haomeiwen.com/subject/kooilktx.html