Задача: Сумма вдоль столбцов
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;
}
}