Thought: easy DFS.
Code:
public class Solution {
public static ArrayList<ArrayList<Integer>> result;
public ArrayList<Integer> cache;
public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
Arrays.sort(num);
result = new ArrayList<ArrayList<Integer>>();
cache = new ArrayList<Integer>();
dfs(num, 0, num.length);
return new ArrayList<ArrayList<Integer>>(new HashSet<ArrayList<Integer>>(result));
}
public void dfs(int[] num, int current, int length) {
if (current == length) {
result.add(new ArrayList<Integer>(cache));
return;
}
dfs(num, current + 1, length);
cache.add(num[current]);
dfs(num, current + 1, length);
cache.remove(cache.size() - 1);
}
}
No comments:
Post a Comment