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;
        }
  • 相关阅读:
    python中的字典
    python中的元组操作
    python中的列表
    python中的内建函数
    python中格式化字符串
    34 哈夫曼编码
    33 构造哈夫曼树
    32 哈夫曼树
    31 树和森林的遍历
    30 森林和二叉树的转化(二叉树与多棵树之间的关系)
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5397980.html
Copyright © 2011-2022 走看看