1 public class Solution {
2 public ArrayList<ArrayList<Integer>> subsets(int[] S) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
6 ArrayList<Integer> list = new ArrayList<Integer>();
7 Arrays.sort(S);
8 generate(result, list, S, 0, S.length);
9 return result;
10 }
11
12 private void generate(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int[] S, int depth, int length)
13 {
14 result.add(list);
15 if(depth == length)
16 return;
17 for(int i = depth; i < length; i++)
18 {
19 ArrayList<Integer> tmp = new ArrayList<Integer>();
20 tmp.addAll(list);
21 tmp.add(S[i]);
22 generate(result, tmp, S, i+1, length);
23 }
24 }
25 }