1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { private static final int[][] DIRECTIONS = new int[][]{{-1, -1}, {-1, 0}, {-1, 1}};
public int minFallingPathSum(int[][] matrix) { int n = matrix.length;
for (int i = 1; i < n; i++) { for (int j = 0; j < n; j++) { int min = Integer.MAX_VALUE; for (int[] direction : DIRECTIONS) { int prevI = i + direction[0], prevJ = j + direction[1]; if (prevI >= 0 && prevI < n && prevJ >= 0 && prevJ < n) { min = Math.min(min, matrix[prevI][prevJ]); } } matrix[i][j] += min; } }
int minPathSum = Integer.MAX_VALUE; for (int j = 0; j < n; j++) { minPathSum = Math.min(minPathSum, matrix[n - 1][j]); } return minPathSum; } }
|
References
931. Minimum Falling Path Sum