public ArrayList<ArrayList<Integer>> subsets(ArrayList<Integer> S) {
// write your code here
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if(S == null || S.size() == 0)
return res;
Collections.sort(S);
ArrayList<Integer> tmp = new ArrayList<Integer>();
res.add(tmp);
dfs(res, S, tmp, 0);
return res;
}
public void dfs(ArrayList<ArrayList<Integer>> res, ArrayList<Integer> S, ArrayList<Integer> tmp, int pos) {
for(int i = pos; i < S.size(); i++) {
tmp.add(S.get(i));
res.add(new ArrayList<Integer>(tmp));
dfs(res, S, tmp, i+1);
tmp.remove(tmp.size()-1);
}
}
Leave A Comment