package com.interview.books.leetcodeoj;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created_By: stefanie
* Date: 14-12-23
* Time: 下午5:51
*/
public class LOJ78_Subset {
//de dup by sort(S) and while(offset < S.length - 1 && S[offset + 1] == S[offset]) offset++;
List<List<Integer>> sols;
public List<List<Integer>> subsets(int[] S) {
sols = new ArrayList<>();
Arrays.sort(S);
sols.add(new ArrayList());
List<Integer> set = new ArrayList();
subsets(S, 0, set);
return sols;
}
public void subsets(int[] S, int offset, List<Integer> set){
if(offset >= S.length) return;
set.add(S[offset]);
sols.add(new ArrayList(set));
subsets(S, offset + 1, set);
set.remove(set.size() - 1);
while(offset < S.length - 1 && S[offset + 1] == S[offset]) offset++;
subsets(S, offset + 1, set);
}
}