题目描述:
题解:动态规划
1.rows表示输入matrix行数,cols表示matrix列数,设置一个大小和输入matrix相等的dp,dp[rows-1]和matrix[rows-1]相等。
2.i从rows-2开始,对dp[i][j]进行更新,dp[i][j]=min(,dp[i+1]pj-1],dp[i+1][j],dp[i+1][j+1])+matrix[i][j],需要注意j=0或cols-1的情况。
3.返回dp[0]中的最小值。
class Solution: def minFallingPathSum(self, matrix: List[List[int]]) -> int: rows = len(matrix) cols = len(matrix) dp = [[0 for i in range(cols)]for j in range(rows)] dp[rows-1] = matrix[rows-1] for i in range(rows-2,-1,-1): for j in range(cols): if j==0: dp[i][j] = min(dp[i+1][0],dp[i+1][1])+matrix[i][j] elif j==cols-1: dp[i][j] = min(dp[i+1][cols-1],dp[i+1][cols-2])+matrix[i][j] else: dp[i][j] = min(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])+matrix[i][j] return min(dp[0])