题目描述:
给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。
下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1) 。
示例:
解题思路:
从第二行开始取上面及上面左右的最小值和该元素相加,到最后取最小值。
代码附上:
class Solution {
public int minFallingPathSum(int[][] matrix) {
int i=0,j=0;
for(i=1;i<matrix.length;i++) {
matrix[i][0]+=matrix[i-1][0]<matrix[i-1][1]?matrix[i-1][0]:matrix[i-1][1];
for(j=1;j<matrix[0].length-1;j++) {
matrix[i][j]+=Min(matrix[i-1][j-1],matrix[i-1][j],matrix[i-1][j+1]);
}
matrix[i][j]+=matrix[i-1][j-1]<matrix[i-1][j]?matrix[i-1][j-1]:matrix[i-1][j];
}
Arrays.sort(matrix[i-1]);
return matrix[i-1][0];
}
public int Min(int a,int b,int c) {
if(a<b) {
if(a<c) return a;
else return c;
} else {
if(b<c) return b;
else return c;
}
}
}