給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。
說明:每次只能向下或者向右移動一步。
示例:
輸入:[[1,3,1],
[1,5,1],
[4,2,1]
]輸出: 7
解釋: 因為路徑 1→3→1→1→1的總和最小。
class
solution
:def
minpathsum
(self, grid: list[list[
int]])
->
int:
m=len(grid)
n=len(grid[0]
) self.re=
none
defhelper
(i,j,num)
:if i==m-
1and j==n-1:
if self.re==
none
or numself.re=num
return
if i+
1helper(i+
1,j,num+grid[i+1]
[j])
if j+
1helper(i,j+
1,num+grid[i]
[j+1])
helper(0,
0,grid[0]
[0])
return self.re
class
solution
:def
minpathsum
(self, grid: list[list[
int]])
->
int:
m=len(grid)
n=len(grid[0]
)for i in
range
(m):
for j in
range
(n):
if i==
0and j==0:
continue
if i==0:
grid[i]
[j]=grid[i]
[j-1
]+grid[i]
[j]elif j==0:
grid[i]
[j]=grid[i-1]
[j]+grid[i]
[j]else
: grid[i]
[j]=
min(grid[i-1]
[j],grid[i]
[j-1])
+grid[i]
[j]return grid[-1
][-1
]
64 最小路徑和
給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。用動態規劃可直接解決,dp i j 代表著從 0 0 ...
64 最小路徑和
方法一 動態規劃法 二維 該問題可以通過動態規劃的方法進行求解,動態規劃最主要的是將其動態轉移方程寫出來。由於該每次只能向下和向右移動,故可以知道,對於位置m,n處,到達該點只能通過位置m,n 1處以及位置m 1,n處,故最小的路徑應為二者較小值加當前位置的值,定義dp i j 為位置i,j處的最小...
64 最小路徑和
題目描述 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。知識點 動態規劃 多階段決策最優解模型,每階段都對應一組狀態 狀態轉移方程構造方式 遞迴 備忘錄 反向遞迴 迭代遞推 正向迭代 思路和 狀態轉移方式 ...