leetcode-18 4Sum

来源:互联网 发布:淘宝网注册 编辑:程序博客网 时间:2024/04/20 01:12

暴力大法好。


import  java.util.* ;public class Solution{   public List<List<Integer>> fourSum(int[] nums, int target){      Arrays.sort(nums) ;      HashMap<Integer, List<Node>> map = new HashMap<Integer, List<Node>>() ;      int n = nums.length ;      for(int i = 0 ; i < n ; i++){       for(int j = i + 1 ; j < n ; j++){         int sum = nums[i] + nums[j] ;         List<Node> g = map.containsKey(sum) ? map.get(sum) : new ArrayList<Node>() ;         Node node = new Node(nums[i], i , nums[j] , j) ;         g.add(node) ;         if(! map.containsKey(sum)) map.put(sum, g) ;       }      }            List<Integer> twosum = new ArrayList<Integer>() ;      for(int e : map.keySet()) twosum.add(e) ;      Collections.sort(twosum) ;            Set<List<Integer>> st = new HashSet<List<Integer>>() ;      for(int suma : twosum){       int sumb = target - suma ;       if(map.containsKey(sumb)){         for(Node A : map.get(suma)){          for(Node B : map.get(sumb)){            if(A.bid < B.aid){              List<Integer> now = new ArrayList<Integer>() ;              now.add(A.a) ; now.add(A.b) ; now.add(B.a) ; now.add(B.b) ;                   st.add(now) ;            }          }         }       }      }            List<List<Integer>> result = new ArrayList<List<Integer>>() ;      for(Iterator<List<Integer>> it = st.iterator() ; it.hasNext() ; ){           result.add(it.next()) ;      }          return result ;     }       public static void main(String[] args){      System.out.println(new Solution().fourSum(new int[]{1,0,-1,0,-2,2}, 0));   }   }class Node{  public  int a , aid , b , bid ;    public  Node(int a , int aid , int b , int bid){      this.a = a ;      this.aid = aid ;      this.b = b ;      this.bid = bid ;  }    public boolean equals(Node other) { return  a == other.a && b == other.b ;  }  }


0 0
原创粉丝点击