Skip to content

Commit 6771d07

Browse files
author
huang
committed
leetcode78回溯算法子集
1 parent 76e7b04 commit 6771d07

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

leetcode/Subsets0078.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
/**
5+
* leetcode回溯法:子集
6+
* 该题比较难,回溯算法的精髓在于平行宇宙的概念(自创的)
7+
*/
8+
9+
public class Subsets0078{
10+
11+
public static void main(String[] args) {
12+
int nums[] = {1,2,3};
13+
subsets(nums);
14+
}
15+
16+
private static List<List<Integer>> result = new ArrayList<List<Integer>>();
17+
18+
public static List<List<Integer>> subsets(int[] nums) {
19+
20+
List<Integer> tmp = new ArrayList<>();
21+
backtrack(nums, 0, tmp);
22+
return result;
23+
}
24+
25+
private static void backtrack(int[] nums, int start, List<Integer> tmp) {
26+
27+
result.add(new ArrayList<>(tmp));
28+
29+
for (int i = start; i < nums.length; i++) {
30+
tmp.add(nums[i]);
31+
backtrack(nums, i+1, tmp);
32+
tmp.remove(tmp.size()-1);
33+
}
34+
for (int j : tmp) {
35+
System.out.print(j + " ");
36+
}
37+
System.out.println();
38+
}
39+
}

0 commit comments

Comments
 (0)