LeetCode 64 最小路徑和

2021-10-08 11:09:32 字數 1247 閱讀 8169

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。

說明:每次只能向下或者向右移動一步。

示例:輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 7

解釋: 因為路徑 1→3→1→1→1 的總和最小。

求最值問題最先想到的就是動態規劃問題。動態規劃的核心問題就是窮舉。因為要求最值,肯定要把所有可行的答案窮舉出來,然後求最值。但是動態規劃有點特別,因為這類問題存在[重疊子問題],如果暴力窮舉的話,效率會及其底下,所以需要[備忘錄]或者[dp table]來優化窮舉過程,避免不必要的計算。

dp[i][j]表示走到位置(i,j)的最小路徑總和,這裡的位置ij指的是三角形中的第i行,第j列。

我們可以把dp[i][j]代表到達第i行,第j列的最小路徑,則狀態轉移方程表示如下:

dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + grid[i][j]

對於如下情況需要單獨考慮:

1)當取dp[i][0]時,此時不存在dp[i][j-1]的**,因此,當j=0時,狀態轉移方程如下:

dp[i][j] = dp[i-1][j] + grid[i][j]

2) 當取dp[0][j]時,此時不存在dp[i-1][j]的**,因此,當i=0時,狀態轉移方程如下:

dp[i][j] = dp[i][j-1] + grid[i][j]

// a code block

class solution

if(i != 0 && j == 0)

if(i != 0 && j != 0) }}

return dp[m-1][n-1];

}}

class solution 

}return grid[grid.length - 1][grid[0].length - 1];

}}

LeetCode 64 最小路徑和

題目描述 提示幫助 提交記錄 社群討論 閱讀解答 隨機一題 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和...

LeetCode 64 最小路徑和

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。以輸入為 3 3 的網格為例,其中 m 3,n 3 1...

LeetCode 64 最小路徑和

題目 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。解題思路 1 由於路線只向下或者右走,所以在最上...