Skip to content

Commit 96b8263

Browse files
author
ChienkuChen
committed
Redo 78
1 parent 117cbfb commit 96b8263

File tree

2 files changed

+55
-18
lines changed

2 files changed

+55
-18
lines changed

src/_78/78.subsets.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,29 @@
55

66
class Solution {
77
public List<List<Integer>> subsets(int[] nums) {
8+
if (nums == null && nums.length == 0)
9+
return new ArrayList<>();
10+
811
return helper(nums, 0);
912
}
1013

11-
private List<List<Integer>> helper(int[] nums, int current) {
14+
private List<List<Integer>> helper(int[] nums, int start) {
1215
List<List<Integer>> result = new ArrayList<>();
1316

14-
if (nums.length == 0) {
15-
return result;
16-
}
17-
18-
if (current == nums.length - 1) {
19-
List<Integer> tmp = new ArrayList<>();
20-
tmp.add(nums[current]);
21-
22-
result.add(tmp);
17+
if (start >= nums.length) {
2318
result.add(new ArrayList<>());
24-
2519
return result;
2620
}
2721

28-
// want nums[current]
29-
List<List<Integer>> others = helper(nums, current + 1);
30-
for (List<Integer> list : others) {
22+
List<List<Integer>> lists = helper(nums, start + 1);
23+
result.addAll(lists);
24+
25+
for (List<Integer> list : lists) {
3126
List<Integer> tmp = new ArrayList<>(list);
32-
tmp.add(nums[current]);
27+
tmp.add(nums[start]);
3328
result.add(tmp);
3429
}
3530

36-
// don't want nums[current]
37-
result.addAll(others);
38-
3931
return result;
4032
}
4133

src/_78/78.subsets.java.bak

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package _78;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
class Solution {
7+
public List<List<Integer>> subsets(int[] nums) {
8+
return helper(nums, 0);
9+
}
10+
11+
private List<List<Integer>> helper(int[] nums, int current) {
12+
List<List<Integer>> result = new ArrayList<>();
13+
14+
if (nums.length == 0) {
15+
return result;
16+
}
17+
18+
if (current == nums.length - 1) {
19+
List<Integer> tmp = new ArrayList<>();
20+
tmp.add(nums[current]);
21+
22+
result.add(tmp);
23+
result.add(new ArrayList<>());
24+
25+
return result;
26+
}
27+
28+
// want nums[current]
29+
List<List<Integer>> others = helper(nums, current + 1);
30+
for (List<Integer> list : others) {
31+
List<Integer> tmp = new ArrayList<>(list);
32+
tmp.add(nums[current]);
33+
result.add(tmp);
34+
}
35+
36+
// don't want nums[current]
37+
result.addAll(others);
38+
39+
return result;
40+
}
41+
42+
public static void main(String[] args) {
43+
System.out.println(new Solution().subsets(new int[]{1, 2, 3}));
44+
}
45+
}

0 commit comments

Comments
 (0)