給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
例如,給定三角形:
[自頂向下的最小路徑和為[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
11
(即,2+3+5+1= 11)。
這道題的第乙個難點就出現在題目中給出的三角形。其實那就是乙個普通的二維陣列,為了表現成三角形所以加了縮排。
[ [2],
[3,4],
[6,5,7],
[4,1,8,3]
]其實題目中給出的陣列就是上面的這個樣子。由於每次只能向相鄰的兩個結點走,因此就是說上層的點對應的最小值點是由下面的結點和右下的結點
兩結點的最小值再加上當前自己的值得來的,這也就是遞推公式了。
class solution:
def minimumtotal(self, ********: list[list[int]]) -> int:
self.dp = {}
self.nums = len(********)
self.length = len(********[self.nums - 1])
for i in range(self.length):
self.dp[(self.nums - 1,i)] = ********[self.nums - 1][i]
for y in reversed(range(self.nums-1)):
for x in range(len(********[y])):
self.dp[(y,x)] = ********[y][x] + min(self.dp[(y+1,x)],self.dp[(y+1,x+1)])
return self.dp[(0,0)]
leetcode 120 三角形最小路徑
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。相鄰的結點 在這裡指的是 下標 與 上一層結點下標 相同或者等於 上一層結點下標 1 的兩個結點。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為 11 即,2 3 5 1 11 注意 既...
leetcode 120 三角形最小路徑和
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為11 即,2 3 5 1 11 分析 從右下向左上前進。dp i j min dp i 1 j dp i 1 j i j dp i j 表示...
leetcode120 三角形最小路徑和
給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為 11 即,2 3 5 1 11 說明 如果你可以只使用 o n 的額外空間 n 為三角形的總行數 來解決這個問題,那麼你的演算法會很加分。...