zoukankan      html  css  js  c++  java
  • 18. 4Sum

        /*
         * 18. 4Sum
         * 2016-4-15 by Mingyang
         * 这个题目跟3sum一样的去重方法,不用HashSet,因为太慢,注意这个题目是4个的和为target,不为0
         * 然后这里把判重条件改了一下,改为了 if(i>0&&nums[i]==nums[i-1])  continue;
         * 这么更言简意赅,同理,if(j>i+1&&nums[j]==nums[j-1])也是跳过
         */
    
        public List<List<Integer>> fourSum(int[] nums, int target) {
            List<List<Integer>> res=new ArrayList<List<Integer>>();
            int len=nums.length;
            if(nums==null||len==0)
              return res;
            Arrays.sort(nums);
            for(int i=0;i<len;i++){
                if(i==0||nums[i]!=nums[i-1]){
                    for(int j=i+1;j<len;j++){
                        if(j==i+1||nums[j]!=nums[j-1]){
                            int low=j+1;
                            int high=len-1;
                            while(low<high){
                                int sum=nums[low]+nums[high]+nums[i]+nums[j];
                                if(sum==target){
                                    List<Integer> list=new ArrayList<Integer>();
                                    list.add(nums[i]);
                                    list.add(nums[j]);
                                    list.add(nums[low]);
                                    list.add(nums[high]);
                                    res.add(list);
                                    while(low<high&&nums[low]==nums[low+1]) low++;
                                    while(low<high&&nums[high]==nums[high-1]) high--;
                                    low++;
                                    high--;
                                }else if(sum<target){
                                   low++;
                               }else{
                                   high--;
                               }
                            }
                        }
                    }
                }
            }
            return res;
        }
  • 相关阅读:
    L3-013. 非常弹的球
    L2-020. 功夫传人
    L1-039. 古风排版
    Innobackup备份过程
    MySQL物理备份的过程
    数据库表设计
    MySQL启动排错
    redo的类型和作用
    描述undo的三个作用
    redo log和binlog的纠缠
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5397980.html
Copyright © 2011-2022 走看看