leetcode JAVA Subsets II 4.26 难度系数4

2014-11-24 01:37:06 · 作者: · 浏览: 0

Given a collection of integers that might contain duplicates, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

    For example,
    If S = [1,2,2], a solution is:

    [
      [2],
      [1],
      [1,2,2],
      [2,2],
      [1,2],
      []
    ]
     
    public class Solution {
        public ArrayList
         
          > subsetsWithDup(int[] num) {
            ArrayList
          
           > results = new ArrayList
           
            >(); ArrayList
            
              result = new ArrayList
             
              (); Arrays.sort(num); dfs(num,0,result,results); return results; } private void dfs(int[] num, int step, ArrayList
              
                result, ArrayList
               
                > results) { if(!results.contains(result)) results.add(new ArrayList
                
                 (result)); for(int i=step;i
                 
                  
    跟上题一样,可以2种方式加上去除重复。
    第二种去重:
    public class Solution {
        public ArrayList
          
           > subsetsWithDup(int[] num) {
            ArrayList
           
            > results = new ArrayList
            
             >(); ArrayList
             
               result = new ArrayList
              
               (); Arrays.sort(num); dfs(num,0,result,results); return results; } private void dfs(int[] num, int step, ArrayList
               
                 result, ArrayList
                
                 > results) { results.add(new ArrayList
                 
                  (result)); for(int i=step;i