矩阵的最小路径和,动态规划,时间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]
京公网安备 11010502036488号