Minimum Falling Path Sum LeetCode solution in Java

1
class Solution {
2
public int min(int[][] matrix, int[][] dp, int i, int j) {
3
int a, b, c;
4
if (i == 0) return matrix[i][j];
5
if (dp[i][j] != Integer.MAX_VALUE) return dp[i][j];
6
if (j == 0) {
7
dp[i][j] = Math.min(min(matrix, dp, i - 1, j), min(matrix, dp, i - 1, j + 1)) + matrix[i][j];
8
} else if (j == matrix.length - 1) {
9
dp[i][j] = Math.min(min(matrix, dp, i - 1, j), min(matrix, dp, i - 1, j - 1)) + matrix[i][j];
10
} else {
11
dp[i][j] =
12
Math.min(
13
Math.min(min(matrix, dp, i - 1, j), min(matrix, dp, i - 1, j + 1)),
14
min(matrix, dp, i - 1, j - 1))
15
+ matrix[i][j];
16
}
17
return dp[i][j];
18
}
19

20
public int minFallingPathSum(int[][] matrix) {
21
int dp[][] = new int[matrix.length][matrix.length];
22
if (matrix.length == 1) return matrix[0][0];
23
for (int i = 0; i < matrix.length; i++)
24
for (int j = 0; j < matrix.length; j++) dp[i][j] = Integer.MAX_VALUE;
25
int min = Integer.MAX_VALUE;
26
for (int i = 0; i < matrix.length; i++) {
27
min = Math.min(min, min(matrix, dp, matrix.length - 1, i));
28
}
29
return min;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0