Skip to content

Commit c938e17

Browse files
committed
subset
1 parent fe96f42 commit c938e17

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

dfs/SubsetsWithDup.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package Algorithms.dfs;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
public class SubsetsWithDup {
8+
public List<List<Integer>> subsetsWithDup(int[] num) {
9+
List<List<Integer>> ret = new ArrayList<List<Integer>>();
10+
11+
if (num == null) {
12+
return ret;
13+
}
14+
15+
Arrays.sort(num);
16+
17+
dfs(num, new ArrayList<Integer>(), ret, 0);
18+
19+
return ret;
20+
}
21+
22+
public void dfs(int[] num, List<Integer> path, List<List<Integer>> ret, int index) {
23+
ret.add(new ArrayList<Integer>(path));
24+
25+
for (int i = index; i < num.length; i++) {
26+
// skip the duplicate.
27+
if (i > index && num[i] == num[i - 1]) {
28+
continue;
29+
}
30+
31+
path.add(num[i]);
32+
// 注意:这里是i + 1不是index + 1!!!
33+
dfs(num, path, ret, i + 1);
34+
path.remove(path.size() - 1);
35+
}
36+
37+
}
38+
}

0 commit comments

Comments
 (0)