关闭

Leetcode 18 4Sum

标签: acmleetcode工作面试algorithmc++
1254人阅读 评论(0) 收藏 举报
分类:

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;
    }
};


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Leetcode 454. 4Sum II 四数之和2 解题报告

1 解题思想首先,这是一道远古之前的题的进化版: Leetcode #18 4Sum 四数之和 解题小节+K-Sum思想 但是我不想说那个题了,因为我也记不住了。。这道题意思就是ABCD四个数组,长度相同,现在问题你说分别从这四个数组中各挑一个数相加其和为0,有几种方式?首先这道题肯定不能四层循环...
  • MebiuW
  • MebiuW
  • 2016-11-16 22:45
  • 2795

【LeetCode-面试算法经典-Java实现】【018-4Sum(四个数的和)】

【018-4Sum(四个数的和)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d ...
  • DERRANTCM
  • DERRANTCM
  • 2015-07-22 07:22
  • 2432

LeetCode 18 4Sum(4个数的和)

翻译给定一个有n个数字的数组S,在S中是否存在元素a,b,c和d的和恰好满足a + b + c + d = target。找出数组中所有的不想等的这四个元素,其和等于target。备注:在(a,b,c,d)中的元素必须从小到大排列。(a ≤ b ≤ c ≤ d) 其结果必须不能够重复。例如,给定S ...
  • NoMasp
  • NoMasp
  • 2015-10-18 12:11
  • 2808

[LeetCode] 4Sum 四数之和解法(本算法n数之和都能解)

[LeetCode] 4Sum 四数之和解法(本算法3数求和能解, n数之和都能解)
  • lm2009200
  • lm2009200
  • 2017-07-27 13:09
  • 187

LeetCode 之 4Sum 的四种实现

2.1.10 4Sum 描述 Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in...
  • u013630349
  • u013630349
  • 2015-08-24 13:15
  • 733

LeetCode进阶之路(4Sum)

Given an array S of n integers, are there elements a, b, c, and d in S such that a +&...
  • yulingkai88
  • yulingkai88
  • 2016-07-19 00:08
  • 92

LeetCode之4Sum(经典)

题目: Given an array S of n integers, are there elements a,b,c, and d in S such that a+b+c+d = target? Find all unique quadruplets in the array which ...
  • z702143700
  • z702143700
  • 2015-06-07 17:06
  • 670

Leetcode #18 4Sum 四数之和 解题小节+K-Sum思想

1题目理解Leetcode不少题目是成一个体系的,这道题是找四数之和等于四数之和的题,之前还有2Sum和3Sum,我也已经做了题目的小节,可以点开进行查看。 Leetcode #15 3Sum 三数之和 解题小节 Leetcode #1 Two Sum 解题小结和之前的问题一样,有如下的限制:...
  • MebiuW
  • MebiuW
  • 2016-03-20 20:15
  • 624

leecode 解题总结:18 4Sum

#include #include #include #include #include using namespace std; /* 问题: Given an array S of n integers, are there elements a, b, c, and d in S ...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2017-01-31 10:34
  • 111

数据结构与算法[LeetCode]4Sum

iven an array S of n integers, are there elements a, b, c, and d in S such that a +&#...
  • SUN20082567
  • SUN20082567
  • 2014-06-12 19:24
  • 474
    个人资料
    • 访问:370098次
    • 积分:6633
    • 等级:
    • 排名:第4189名
    • 原创:286篇
    • 转载:11篇
    • 译文:0篇
    • 评论:65条
    博客专栏
    文章分类
    最新评论