如题 leetcode 120 题
代码:
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
# 三角形的当前行的列数和行数相等 所以状态压缩到m行也就是最后一行的列数
# 状态压缩后只能从最后一行开始求,不能从第一行开始求
# 上一行的一个数都是由下一行的两个数决定的,不会越界
dp = triangle[-1]
for row in range(len(triangle) - 2, -1, -1):
# 当前行的行数和列数相等
for col in range(row + 1):
dp[col] = min(dp[col], dp[col + 1]) + triangle[row][col]
return dp[0]