|
2 | 2 | * @param {number[][]} grid
|
3 | 3 | * @return {number}
|
4 | 4 | */
|
5 |
| -var countPaths = function(grid) { |
6 |
| - let MOD = 1e9 + 7; |
7 |
| - let res = 0; |
8 |
| - let M = grid.length, N = grid[0].length; |
| 5 | +var countPaths = function (grid) { |
| 6 | + const MOD = 1e9 + 7 |
| 7 | + let res = 0 |
| 8 | + const M = grid.length, |
| 9 | + N = grid[0].length |
9 | 10 |
|
10 | 11 | const dp = Array.from({ length: M }, () => Array(N))
|
11 | 12 |
|
12 |
| - for (let r = 0; r < M; r++) { |
13 |
| - for (let c = 0; c < N; c++) { |
14 |
| - res = (res + dfs(grid, r, c, dp)) % MOD; |
15 |
| - } |
16 |
| - } |
17 |
| - return res; |
| 13 | + for (let r = 0; r < M; r++) { |
| 14 | + for (let c = 0; c < N; c++) { |
| 15 | + res = (res + dfs(r, c)) % MOD |
| 16 | + } |
| 17 | + } |
| 18 | + return res |
18 | 19 |
|
19 |
| - function dfs(grid, r, c, dp) { |
20 |
| - if (dp[r][c] != null) { |
21 |
| - return dp[r][c]; |
22 |
| - } |
23 |
| - let MOD = 1e9 + 7; |
24 |
| - let res = 1; |
25 |
| - let M = grid.length, N = grid[0].length; |
26 |
| - |
27 |
| - for (const dir of [[-1, 0], [0, -1], [1, 0], [0, 1]]) { |
28 |
| - let nr = r + dir[0], nc = c + dir[1]; |
29 |
| - if (nr < 0 || nr >= M || nc < 0 || nc >= N || grid[nr][nc] <= grid[r][c]) { |
30 |
| - continue; |
31 |
| - } |
32 |
| - res = (res + dfs(grid, nr, nc, dp))%MOD; |
| 20 | + function dfs(r, c) { |
| 21 | + if (dp[r][c] != null) { |
| 22 | + return dp[r][c] |
| 23 | + } |
| 24 | + let res = 1 |
| 25 | + |
| 26 | + for (const dir of [ |
| 27 | + [-1, 0], |
| 28 | + [0, -1], |
| 29 | + [1, 0], |
| 30 | + [0, 1], |
| 31 | + ]) { |
| 32 | + const nr = r + dir[0], |
| 33 | + nc = c + dir[1] |
| 34 | + if ( |
| 35 | + nr < 0 || |
| 36 | + nr >= M || |
| 37 | + nc < 0 || |
| 38 | + nc >= N || |
| 39 | + grid[nr][nc] <= grid[r][c] |
| 40 | + ) { |
| 41 | + continue |
33 | 42 | }
|
34 |
| - dp[r][c] = res; |
35 |
| - return res; |
| 43 | + res = (res + dfs(nr, nc)) % MOD |
36 | 44 | }
|
37 |
| -}; |
| 45 | + dp[r][c] = res |
| 46 | + return res |
| 47 | + } |
| 48 | +} |
0 commit comments