Задача: Сумма вдоль столбцов
https://t.me/javatgУсловие: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении
Решение:
Java
class Solution { public void minSum(int[][] mat, int n, int r) { if(r < 0) return; for(int i = 0; i < n; i++) { int nextMin = mat[r + 1][i] + mat[r][i]; if(i > 0) nextMin = Math.min(nextMin, mat[r + 1][i - 1] + mat[r][i]); if(i < n - 1) nextMin = Math.min(nextMin, mat[r + 1][i + 1] + mat[r][i]); mat[r][i] = nextMin; } minSum(mat, n, r - 1); } public int minFallingPathSum(int[][] matrix) { int n = matrix.length; minSum(matrix, n, n - 2); int ans = Integer.MAX_VALUE; for(int i = 0; i < n; i++) { if(ans>matrix[0][i]) ans=matrix[0][i]; } return ans; } }