Minimum-Falling-Path-Sum
下降路径最小和
题目细节
给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。
下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。
示例11
2
3输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:12
解释:
可能的下降路径有:
1
2
3 [1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9]
[2,4,7], [2,4,8], [2,5,7], [2,5,8], [2,5,9], [2,6,8], [2,6,9]
[3,5,7], [3,5,8], [3,5,9], [3,6,8], [3,6,9]
和最小的下降路径是 [1,4,7],所以答案是 12。
提示1
21 <= A.length == A[0].length <= 100
-100 <= A[i][j] <= 100
思路
典型的二维动态数组题目。创建一个二维的数组A[row][column]存储结果,每一个位置存储的是第一行到该位置最小的下降路径。
一般情况1
A[i][j] +=min(min(A[i-1][j-1],A[i-1][j]),A[i-1][j+1]);
前后两列情况1
2第一列: A[i][j] += min(A[i-1][j],A[i-1][j+1]);
最后一列: A[i][j] += min(A[i-1][j-1],A[i-1][j]);
Algorithm
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 孙云增的博客!
评论