天天看点

【LeetCode64】最小路径和(简单dp,注意思路-回溯->记忆化搜索->dp->空间压缩)

1.题目

【LeetCode64】最小路径和(简单dp,注意思路-回溯->记忆化搜索->dp->空间压缩)
【LeetCode64】最小路径和(简单dp,注意思路-回溯->记忆化搜索->dp->空间压缩)

2.思路

(1)确定状态

表示从到右下角(终点)的最短路径

(2)转移方程

【LeetCode64】最小路径和(简单dp,注意思路-回溯->记忆化搜索->dp->空间压缩)

(3)初始条件+边界条件

dp[0][0] = grid[0][0]

注意:

3.代码

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        m = len(grid) # 行数
        n = len(grid[0]) # 列数
        dp = [[0] * n for k in range(m)]
        dp[0][0] = grid[0][0]
        for i in range(m):
            for j in range(n):
                if i == 0 and j!= 0:# 第一行
                    dp[i][j] = grid[i][j] + dp[i][j - 1]
                elif i != 0 and j == 0: # 第一列
                    dp[i][j] = grid[i][j] + dp[i - 1][j]
                elif i != 0 and j != 0:
                    dp[i][j] = grid[i][j] + min(dp[i - 1][j], dp[i][j - 1])
        return dp[m - 1][n - 1]      

继续阅读