矩阵的最小路径和,动态规划,时间O(mn),空间O(m)

动态规划的核心:初始状态+状态转移方程

class Solution:
    def minPathSum(self , matrix: List[List[int]]) -> int:
        m, n = len(matrix), len(matrix[0])
        dp = [0]
        for i in range(n):          # 第一行状态
            dp.append(dp[i]+matrix[0][i])
        dp[0] = 50001               # 给一个足够大值值,保证不会从占状态过来
        for i in range(1, m):
            for j in range(n):
                dp[j+1] = min(dp[j+1], dp[j])+matrix[i][j]    # 两个途径转换,取较小者
        return dp[-1]