Number of Paths with Max Score LeetCode solution in Java

1
class Solution {
2
public int[] pathsWithMaxScore(List<String> board) {
3
int M = (int) 1e9 + 7;
4
int m = board.size();
5
int n = board.get(0).length();
6
int[][] dp = new int[m][n];
7
int[][] ways = new int[m][n];
8
ways[0][0] = 1; // base case.
9
int[][] dirs = {{-1, 0}, {0, -1}, {-1, -1}}; // all 3 ways where we can travel.
10
for (int i = 0; i < m; i++) {
11
for (int j = 0; j < n; j++) {
12
if (board.get(i).charAt(j) == 'X') {
13
continue;
14
}
15
int cur = Character.isDigit(board.get(i).charAt(j)) ? board.get(i).charAt(j) - '0' : 0;
16
for (int[] d : dirs) {
17
int x = d[0] + i;
18
int y = d[1] + j;
19
if (x < 0 || y < 0 || ways[x][y] == 0) {
20
continue;
21
}
22
if (cur + dp[x][y] > dp[i][j]) {
23
dp[i][j] = cur + dp[x][y];
24
ways[i][j] = 0;
25
}
26
if (cur + dp[x][y] == dp[i][j]) {
27
ways[i][j] += ways[x][y];
28
ways[i][j] %= M;
29
}
30
}
31
}
32
}
33
return new int[] {dp[m - 1][n - 1], ways[m - 1][n - 1]};
34
}
35
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0