File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ // Memoized DFS
2+ // TC: O(m * n)
3+ // SC: O(m * n)
4+ function uniquePaths ( m : number , n : number ) : number {
5+ const memo = new Map < string , number > ( ) ;
6+
7+ const traverse = ( row : number , col : number ) => {
8+ if ( row >= m || col >= n ) return 0 ;
9+ if ( row === m - 1 && col === n - 1 ) return 1 ;
10+ const key = `${ row } -${ col } ` ;
11+ if ( memo . has ( key ) ) return memo . get ( key ) ;
12+
13+ const result = traverse ( row + 1 , col ) + traverse ( row , col + 1 ) ;
14+ memo . set ( key , result ) ;
15+ return result ;
16+ } ;
17+
18+ return traverse ( 0 , 0 ) ;
19+ }
20+
21+ // DP
22+ // TC: O(m * n)
23+ // SC: O(m * n)
24+ /*
25+ function uniquePaths(m: number, n: number): number {
26+
27+ // 1, 1, 1
28+ // 1, 1+1=2, 1+(1+1)=3
29+
30+ const dp = Array.from({length: m}, () => Array(n).fill(1));
31+
32+ for(let i=1; i<m; i++) {
33+ for(let j=1; j<n; j++) {
34+ dp[i][j] = dp[i-1][j] + dp[i][j-1]
35+ }
36+ }
37+
38+ return dp[m-1][n-1];
39+ };
40+ */
41+
You can’t perform that action at this time.
0 commit comments