File tree 2 files changed +29
-1
lines changed
2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -17,7 +17,11 @@ var combinationSum2 = function(candidates, target) {
17
17
calCombs ( candis . slice ( 1 ) , [ ...resArr , ele ] , targ - ele ) ;
18
18
}
19
19
20
- calCombs ( candis . slice ( 1 ) , [ ...resArr ] , targ ) ;
20
+ let sliceIndex = 0 ;
21
+ while ( sliceIndex < candis . length && candis [ 0 ] === candis [ sliceIndex ] ) {
22
+ sliceIndex ++ ;
23
+ }
24
+ calCombs ( candis . slice ( sliceIndex ) , [ ...resArr ] , targ ) ;
21
25
}
22
26
23
27
calCombs ( candidates , [ ] , target ) ;
Original file line number Diff line number Diff line change @@ -45,3 +45,27 @@ let subpermute = function(base, nums) {
45
45
46
46
return res ;
47
47
} ;
48
+
49
+
50
+ /**
51
+ * @param {number[] } nums
52
+ * @return {number[][] }
53
+ */
54
+ var permute = function ( nums ) {
55
+ const len = nums . length ;
56
+ if ( ! len ) return [ ] ;
57
+ const res = [ ] ;
58
+
59
+ const enmurate = ( preArr , candidates ) => {
60
+ if ( candidates . length === 1 ) return res . push ( [ ...preArr , ...candidates ] ) ;
61
+
62
+ for ( let i = 0 ; i < candidates . length ; i ++ ) {
63
+ const temp = candidates . slice ( ) ;
64
+ temp . splice ( i , 1 ) ;
65
+ enmurate ( [ ...preArr , candidates [ i ] ] , temp ) ;
66
+ }
67
+ }
68
+
69
+ enmurate ( [ ] , nums . slice ( ) ) ;
70
+ return res ;
71
+ } ;
You can’t perform that action at this time.
0 commit comments