Skip to content

Commit 00764a4

Browse files
committed
Time: 1355 ms (87%), Space: 98.8 MB (42.6%) - LeetHub
1 parent e5dafbf commit 00764a4

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# time complexity: O(m * n * k)
2+
# space complexity: O(m * n * k)
3+
from typing import List
4+
5+
6+
class Solution:
7+
def numberOfPaths(self, grid: List[List[int]], k: int) -> int:
8+
MOD = 10**9 + 7
9+
ROW, COL = len(grid), len(grid[0])
10+
11+
dp = [[[0] * k for _ in range(COL + 1)] for _ in range(ROW + 1)]
12+
13+
for r in range(1, ROW + 1):
14+
for c in range(1, COL + 1):
15+
if r == 1 and c == 1:
16+
dp[r][c][grid[0][0] % k] = 1
17+
continue
18+
19+
value = grid[r - 1][c - 1] % k
20+
for i in range(k):
21+
prevMod = (i - value + k) % k
22+
dp[r][c][i] = (
23+
dp[r - 1][c][prevMod] + dp[r][c - 1][prevMod]
24+
) % MOD
25+
26+
return dp[ROW][COL][0]
27+
28+
29+
grid = [[5, 2, 4], [3, 0, 5], [0, 7, 2]]
30+
k = 3
31+
print(Solution().numberOfPaths(grid, k))
32+
grid = [[0, 0]]
33+
k = 5
34+
print(Solution().numberOfPaths(grid, k))
35+
grid = [[7, 3, 4, 9], [2, 3, 6, 2], [2, 3, 7, 0]]
36+
k = 1
37+
print(Solution().numberOfPaths(grid, k))

0 commit comments

Comments
 (0)