@@ -32,7 +32,7 @@ var generate = function(nums, index, cur, result) {
32
32
result . push ( cur . slice ( ) ) ;
33
33
return
34
34
}
35
-
35
+
36
36
generate ( nums , index + 1 , cur , result ) ;
37
37
cur . push ( nums [ index ] ) ;
38
38
generate ( nums , index + 1 , cur , result ) ;
@@ -42,11 +42,9 @@ var generate = function(nums, index, cur, result) {
42
42
43
43
44
44
// second try
45
-
46
-
47
45
var subsets = function ( nums ) {
48
46
var res = [ [ ] ] ;
49
-
47
+
50
48
function generate ( nums , i , cur , res ) {
51
49
for ( ; i < nums . length ; i ++ ) {
52
50
cur . push ( nums [ i ] ) ;
@@ -55,7 +53,24 @@ var subsets = function(nums) {
55
53
cur . pop ( ) ;
56
54
}
57
55
}
58
-
56
+
59
57
generate ( nums , 0 , [ ] , res ) ;
60
58
return res ;
61
- } ;
59
+ } ;
60
+
61
+ // Third solution
62
+ var subsets = function ( nums ) {
63
+ var results = [ ] ;
64
+ combine ( nums , 0 , [ ] , results ) ;
65
+ return results ;
66
+ }
67
+
68
+ var combine = function ( nums , index , partial , results ) {
69
+ if ( index === nums . length ) {
70
+ results . push ( partial ) ;
71
+ return ;
72
+ }
73
+
74
+ combine ( nums , index + 1 , partial , results ) ;
75
+ combine ( nums , index + 1 , partial . concat ( [ nums [ index ] ] ) , results ) ;
76
+ }
0 commit comments