leetcode120:三角形最小路徑和
阿新 • • 發佈:2020-08-16
給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
相鄰的結點 在這裡指的是 下標 與 上一層結點下標 相同或者等於 上一層結點下標 + 1 的兩個結點。
例如,給定三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
自頂向下的最小路徑和為11(即,2+3+5+1= 11)。
說明:
如果你可以只使用 O(n)的額外空間(n 為三角形的總行數)來解決這個問題,那麼你的演算法會很加分。
================================================Python==========================================
class Solution: def minimumTotal(self, triangle: List[List[int]]) -> int: dp = [[float("inf") for _ in range(len(triangle[-1]))] for i in range(len(triangle))] res = float("inf") dp[0][0] = triangle[0][0] for i in range(1, len(triangle)): for j in range(min(i+1, len(triangle[-1]))):if j == 0: dp[i][j] = dp[i-1][j] + triangle[i][j] else: dp[i][j] = min(dp[i-1][j], dp[i-1][j-1]) + triangle[i][j] return min(dp[-1])