Leetcode 18 4Sum

原创 2016年08月29日 20:19:13

Given an array S of n integers, are there elements abc, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

Note: The solution set must not contain duplicate quadruplets.

For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.

A solution set is:
[
  [-1,  0, 0, 1],
  [-2, -1, 1, 2],
  [-2,  0, 0, 2]
]
想了半天还以为有什么高深的算法,没想到题解和之前的两道3Sum一样,两点法,没什么好说的。

有很多人想了很多判断条件去优化程序效率,我觉得没什么必要,于是直接在15的代码上改了。

附上前两道3Sum的地址,会做以后这题就肯定没问题了!

http://blog.csdn.net/accepthjp/article/details/52347224

http://blog.csdn.net/accepthjp/article/details/52352782

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> result;
        int len=(nums.size()-3);
        for(int i=0;i<len;i++)
        {
            if(i!=0 && nums[i]==nums[i-1])continue;
            for(int j=i+1;j<(len+1);j++)
            {
                if(j!=i+1 && nums[j]==nums[j-1])continue;
                int l=j+1,r=nums.size()-1;
                while(l<r)
                {
                    int com=nums[i]+nums[j]+nums[l]+nums[r];
                    if(com>target)
                        r--;
                    else if(com<target)
                        l++;
                    else
                    {
                        result.push_back({nums[i], nums[j], nums[l], nums[r]});
                        while(l<r && nums[l]==nums[l+1]) l++;
                        while(l<r && nums[r]==nums[r-1]) r--;
                        r--;
                        l++;
                    }
                }
            }
        }
        return result;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

leetcode 18. 4Sum

class Solution { public: vector> fourSum(vector& nums, int target) { vector> res; sort(nums.be...

LeetCode 18 - 4Sum

一、问题描述 Description:Description: Given an array S of n integers, are there elements a, b, c, a...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

18. 4Sum Leetcode Python

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar...

leetcode 18 -- 4Sum

4Sum 题目:Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c...

(LeetCode 18) 4Sum

Q: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d =...

leetcode 18. 4Sum

import java.util.ArrayList; import java.util.Arrays; import java.util.List; //Given an array S of n...

Leetcode NO.18 4Sum

本题要求如下: Given an array S of n integers, are there elements a, b, c, and d in S such that&#...

leetcode 18. 4Sum

这道题和前面的3 sum那道题很相似,也可以用相似的办法解决,排序后,先两层循环前面的两个数,后面的两个数从两边往中间逼近。 int quickSort(int *nums,int numSize)...

【leetcode】18. 4Sum

3sum、4sum、以及多sum通用模板

LeetCode 18 4Sum

Given an array S of n integers, are there elements a, b, c, and d in S such that a +&...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)