120. 三角形最小路徑和 難度為medium
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
例如,給定三角形:
[ [2],
[3,4],
[6,5,7],
[4,1,8,3]
]自頂向下的最小路徑和為 11(即,2 + 3 + 5 + 1 = 11)。
說明:如果你可以只使用 o(n) 的額外空間(n 為三角形的總行數)來解決這個問題,那麼你的演算法會很加分。
我們先來滿足基本需求,先求最小路徑
我們定義乙個狀態變數,dp[i][j]表示從底部到這裡來最小值,將這個三角形視為乙個n*n的矩陣,用matrix[i][j]表示當前位置的值那麼我們有
dp[i]
[j]=matrix[i]
[j]+math.
min(dp[i+1]
[j],dp[i+1]
[j])
;//下一行的值和下一行下個位置的值
對於最後一層,我們有
dp[i]
[j]=matrix[i]
[j];
自底向上動態規劃可以得到
public
intminimumtotal
(list
> ********)
else
} layer--;}
return dp[0]
[0];
}
實際上,我們只需要記錄下一層的動態規劃值就行了,不需要全記錄,由於當前層是下一層的當前位置和下一層當前位置的下乙個位置組成的,因此我們可以復用當前位置
public
intminimumtotal
(list
> ********)
else
} layer--;}
return dp[0]
;}
三角形最小路徑和
一 問題解釋 給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。如 給定三角形11 即2 3 5 1 11 二 思路解釋 類似 楊輝三角 問題,採用動態規劃演算法 自三角形的第二行從上到下遍歷,體現在下標為i 1。因為二維向量由i 0開始,i 0代表第一行。每一行,從前...
leetcode 三角形最小路徑
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為11 即,2 3 5 1 11 2 5,6 11,10,13 15,11,18,16 可以看出,將最後乙個陣列的最小值選出來即可,因為最底層...
三角形最小路徑和
題目 力扣 解題思路 先用了回溯法,超時了,後來看題解有人用了動態規劃,我也自己想想了一下,最後想出來了,耶耶耶!class solution else return dp 0 回溯法,超時了 int res integer.max value int n public int minimumtot...