1.動態規劃
對於(i,j),其入口只有(i-1,j)和(i,j-1)兩個,故到達(i,j)的最小路徑為min(dp[i-1][j],dp[i][j-1])+(i,j)
故狀態轉移方程為:
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+(i,j),
但需要注意初始化
對於上邊界,其路徑只能來自於左邊
對於左邊界,其路徑只能來自於上邊
**如下:
class solution {
public:
int minpathsum(vector>& grid) {
int m=grid.size();
int n=grid[0].size();
vector>dp(m,vector(n,0));
//初始化
dp[0][0]=grid[0][0];
//上邊界
for(int i=1;i時間複雜度為o(m*n),空間複雜度為o(m*n)
此外,可以讓grid陣列代替dp陣列,這樣空間複雜度為o(1)
Leetcode 最小路徑和
題目描述 乙個包含非負整數的 m n 的網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。樣例輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。官方題解 解題思路 1 因為每個網格都有向下或向右2...
Leetcode 最小路徑和
64.最小路徑和 先算第一行從前乙個節點到下乙個節點之和 for int i 1 i grid 0 length i 再算第一列從前乙個節點到下乙個節點之和 for int j 1 j grid.length j 接下來從 1,1 算從上乙個節點到當前節點之和 for int i 1 i grid....
LeetCode 64 最小路徑和
題目描述 提示幫助 提交記錄 社群討論 閱讀解答 隨機一題 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和...