天天看點

【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]      

繼續閱讀