18.4Sum

题目

思路:

四个数相加的和等于目标,且要去重复

代码:

class Solution {
    public List<List<Integer>> fourSum(int[] nums, int target) {
        List<List<Integer>> result = new ArrayList<>();//数组初始化
       
       if(nums.length<=3 || nums==null){
           return result;
       }
       
       Arrays.sort(nums);//数组排序,方便后面进行去重复

       for(int i =0;i<nums.length;i++){
           if( i>0 && nums[i]==nums[i-1] ) continue; //注意:必须把i>0写在&& nums[i]==nums[i-1]的前面,因为i>0这个条件就是为了让nums[i-1]取值时不会发生越界错误,如果把i>0放到&&后面了就毫无意义了。
           for(int j = i+1;j<nums.length ;j++){
               if(nums[j]== nums[j-1] && j>i+1) continue;
               int begin = j+1;
               int end = nums.length-1;
               while(begin <end){
                   int sum = nums[i]+nums[j]+nums[begin]+nums[end];
                   if(sum == target){
                       List<Integer> list = new ArrayList<>();
                       list.add(nums[i]);
                       list.add(nums[j]);
                       list.add(nums[begin]);
                       list.add(nums[end]);
                       result.add(list);
                       begin++;
                       end--;
                       while(begin<end && nums[begin]==nums[begin-1]) begin++;
                       while(begin<end && nums[end]== nums[end+1]) end--;
                   }else if(sum>target){
                       end --;
                   }else{
                       begin++;
                   }
                   
               }
           }
       }
       return result;
    }
}


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原题 给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。 ...
    Jason_Yuan阅读 1,259评论 0 1
  • 题目 Given an array S of n integers, are there elements a, ...
    Al73r阅读 187评论 0 0
  • 题目描述:给定一个有n个整数的数组S和目标值target,找到其中所有由四个数a、b、c、d组成,使得a + b ...
    Nautilus1阅读 1,951评论 0 1
  • 题目 Given an array S of n integers, are there elements a, ...
    persistent100阅读 200评论 0 0
  • 什么是优越感?优越感是人性的表现,还是心灵的扭曲? 昨天和一个朋友谈到这个话题的时候,其实内心是比较复杂的。 他问...
    丧心病狂码字的黄家公子阅读 933评论 11 22