File tree Expand file tree Collapse file tree 2 files changed +55
-18
lines changed Expand file tree Collapse file tree 2 files changed +55
-18
lines changed Original file line number Diff line number Diff line change 5
5
6
6
class Solution {
7
7
public List <List <Integer >> subsets (int [] nums ) {
8
+ if (nums == null && nums .length == 0 )
9
+ return new ArrayList <>();
10
+
8
11
return helper (nums , 0 );
9
12
}
10
13
11
- private List <List <Integer >> helper (int [] nums , int current ) {
14
+ private List <List <Integer >> helper (int [] nums , int start ) {
12
15
List <List <Integer >> result = new ArrayList <>();
13
16
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 ) {
23
18
result .add (new ArrayList <>());
24
-
25
19
return result ;
26
20
}
27
21
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 ) {
31
26
List <Integer > tmp = new ArrayList <>(list );
32
- tmp .add (nums [current ]);
27
+ tmp .add (nums [start ]);
33
28
result .add (tmp );
34
29
}
35
30
36
- // don't want nums[current]
37
- result .addAll (others );
38
-
39
31
return result ;
40
32
}
41
33
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments