File tree Expand file tree Collapse file tree 5 files changed +74
-0
lines changed Expand file tree Collapse file tree 5 files changed +74
-0
lines changed Original file line number Diff line number Diff line change
1
+ function combinationSum ( candidates : number [ ] , target : number ) : number [ ] [ ] {
2
+ const result : number [ ] [ ] = [ ] ;
3
+
4
+ const dfs = ( start : number , target : number , path : number [ ] ) => {
5
+ if ( target === 0 ) {
6
+ result . push ( [ ...path ] ) ;
7
+ return ;
8
+ }
9
+
10
+ for ( let i = start ; i < candidates . length ; i ++ ) {
11
+ if ( candidates [ i ] > target ) continue ;
12
+
13
+ path . push ( candidates [ i ] ) ;
14
+ dfs ( i , target - candidates [ i ] , path ) ;
15
+ path . pop ( ) ;
16
+ }
17
+ }
18
+
19
+ candidates . sort ( ( a , b ) => a - b ) ;
20
+ dfs ( 0 , target , [ ] ) ;
21
+ return result ;
22
+ } ;
Original file line number Diff line number Diff line change
1
+ function numDecodings ( s : string ) : number {
2
+ const memo : Record < number , number > = { } ;
3
+
4
+ const dfs = ( index : number ) : number => {
5
+ if ( index === s . length ) return 1 ;
6
+ if ( s [ index ] === '0' ) return 0 ;
7
+
8
+ if ( memo [ index ] !== undefined ) return memo [ index ] ;
9
+
10
+ let res = dfs ( index + 1 ) ;
11
+
12
+ if ( index + 1 < s . length && Number ( s . slice ( index , index + 2 ) ) <= 26 ) {
13
+ res += dfs ( index + 2 ) ;
14
+ }
15
+
16
+ memo [ index ] = res ;
17
+ return res ;
18
+ }
19
+
20
+ return dfs ( 0 ) ;
21
+ }
Original file line number Diff line number Diff line change
1
+ function maxSubArray ( nums : number [ ] ) : number {
2
+ const n = nums . length ;
3
+ const dp = new Array ( n ) . fill ( 0 ) ;
4
+ dp [ 0 ] = nums [ 0 ] ;
5
+ let result = dp [ 0 ] ;
6
+
7
+ for ( let i = 1 ; i < n ; i ++ ) {
8
+ dp [ i ] = Math . max ( nums [ i ] , dp [ i - 1 ] + nums [ i ] ) ;
9
+ result = Math . max ( result , dp [ i ] ) ;
10
+ }
11
+
12
+ return result ;
13
+ }
Original file line number Diff line number Diff line change
1
+ function hammingWeight ( n : number ) : number {
2
+ return n
3
+ . toString ( 2 )
4
+ . split ( "" )
5
+ . reduce ( ( acc , i ) => acc + + i , 0 ) ;
6
+ }
Original file line number Diff line number Diff line change
1
+ function isPalindrome ( s : string ) : boolean {
2
+ const lowered = s . toLowerCase ( ) ;
3
+ const removed = lowered . replaceAll (
4
+ / [ ! | \s | . \\ | \| ( ) @ # $ % ^ & * _ \- + , : ' " \[ \] { } \? ; ` ] / g,
5
+ ""
6
+ ) ;
7
+
8
+ for ( let i = 0 ; i < removed . length ; i ++ ) {
9
+ if ( removed [ i ] !== removed [ removed . length - i - 1 ] ) return false ;
10
+ }
11
+ return true ;
12
+ }
You can’t perform that action at this time.
0 commit comments