码迷,mamicode.com
首页 > 其他好文 > 详细

[Leetcode 18]四数之和 4 Sum

时间:2018-11-18 16:13:25      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:tin   slist   leetcode   思路   else   must   html   代码   adr   

【题目】

Given an array nums of n integers and an integer target, are there elements abc, and d in nums 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.

【思路】

和leetcode15三数之和3 Sum类似https://www.cnblogs.com/inku/p/9955638.html

多一次循环,加粗部分是新增的

重点是去重。

【代码】

class Solution {
    public List<List<Integer>> fourSum(int[] nums, int target) {
        List<List<Integer>> data=new ArrayList<>();
        Arrays.sort(nums);
        for(int i=0;i<nums.length-2;i++){
            for(int j=nums.length-1;j>0;j--){
                int left=i+1;
                int right=j-1;
                if(i>0&&nums[i]==nums[i-1]){
                    continue;}
                if(j<nums.length-1&&nums[j]==nums[j+1]){
                    continue;}
                while(left<right){
                    int sum=nums[left]+nums[right]+nums[i]+nums[j];
                    if(sum==target){
                        data.add(Arrays.asList(nums[left], nums[right],nums[i],nums[j]));
                        left++;
                        right--;
                        while(left<right&&nums[left]==nums[left-1])
                            left++;
                        while(left<right&&nums[right]==nums[right+1])
                            right--;
                    }
                    else if(left<right&&sum>target)
                        right--;
                    else
                        left++;
                }
            }
        }
        return data;
    }
}

 

[Leetcode 18]四数之和 4 Sum

标签:tin   slist   leetcode   思路   else   must   html   代码   adr   

原文地址:https://www.cnblogs.com/inku/p/9977917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!