@@ -32,7 +32,7 @@ var generate = function(nums, index, cur, result) {
3232 result . push ( cur . slice ( ) ) ;
3333 return
3434 }
35-
35+
3636 generate ( nums , index + 1 , cur , result ) ;
3737 cur . push ( nums [ index ] ) ;
3838 generate ( nums , index + 1 , cur , result ) ;
@@ -42,11 +42,9 @@ var generate = function(nums, index, cur, result) {
4242
4343
4444// second try
45-
46-
4745var subsets = function ( nums ) {
4846 var res = [ [ ] ] ;
49-
47+
5048 function generate ( nums , i , cur , res ) {
5149 for ( ; i < nums . length ; i ++ ) {
5250 cur . push ( nums [ i ] ) ;
@@ -55,7 +53,24 @@ var subsets = function(nums) {
5553 cur . pop ( ) ;
5654 }
5755 }
58-
56+
5957 generate ( nums , 0 , [ ] , res ) ;
6058 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