题目:
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。
思路:
要从下到上进行设计,从上到下进行设计会有错误。
程序:
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
row = len(triangle)
if row <= 0:
return 0
result = triangle[-1]
for index1 in range(row - 2, -1, -1):
for index2 in range(index1 + 1):
result[index2] = min(result[index2], result[index2 + 1]) + triangle[index1][index2]
return result[0]