File tree 1 file changed +41
-0
lines changed
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