Middle-题目100:18. 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 gives the sum of target.

Note:
Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.
题目大意:
给出一个数组和目标值target,找出4个数使得和值为target,求出所有解。
题目分析:
既然不要求保持顺序,那么用ksum的通法,先排序再固定k-2个指针即可
源码:(language:java)

public class Solution {
    public List<List<Integer>> fourSum(int[] nums, int target) {
        List<List<Integer>> list = new ArrayList<List<Integer>>();
        Arrays.sort(nums);
        for(int i = 0;i<nums.length-3;i++) {
            for(int j = nums.length-1;j-i>=3;j--) {
                int sum1 = nums[i]+nums[j];
                int m1 = i+1,m2 = j-1;
                while(m1<m2) {
                    int sum = sum1+nums[m1]+nums[m2];
                    if(sum == target) {
                        List<Integer> sublist = new ArrayList<Integer>();
                        sublist.add(nums[i]);
                        sublist.add(nums[m1]);
                        sublist.add(nums[m2]);
                        sublist.add(nums[j]);
                        if(!list.contains(sublist))
                            list.add(sublist);
                        m1++;
                    }
                    else if(sum > target)
                        m2--;
                    else // sum < target
                        m1++;
                }
            }
        }
        return list;
    }
}  

成绩:
56ms,beats 59.49%,众数57ms,4.51%
Cmershen的碎碎念:
本题的去重处理没有做,而是直接遍历list来排除重复解的,否则还能更快一些。

阅读更多
版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs https://blog.csdn.net/cmershen/article/details/51548537
个人分类: Leetcode
上一篇Middle-题目99:227. Basic Calculator II
下一篇Middle-题目101:332. Reconstruct Itinerary
想对作者说点什么? 我来说一句

java面试100题目(X)1

2009年05月14日 237KB 下载

100IT名企面试总结

2018年01月23日 4.66MB 下载

java面试100题目(X).pdf

2008年02月20日 251KB 下载

100条经典C语言笔试题目

2013年08月12日 2.09MB 下载

Java面试100题目.pdf

2011年02月17日 289KB 下载

java面试100题及答案(免费用)

2012年11月06日 38KB 下载

最新版c语言经典习题100

2015年08月31日 359KB 下载

100例c语言经典题目

2013年05月09日 343KB 下载

没有更多推荐了,返回首页

关闭
关闭