思路:dp 數(shù)組钞速,每次從后往前更新荐虐,頭尾兩個(gè)值只有一種情況踏枣,即尾只能加上上一層最末的昌屉,頭只能加上上一層最前的,其余的話
dp[i]=min(dp[i - 1] + item[i], dp[i] + item[i])
class Solution(object):
def minimumTotal(self,triangle):
"""
:type triangle: List[List[int]]
:rtype: int
"""
dp = [0] * len(triangle)
dp[0] = triangle[0][0]
for item in triangle[1:]:
dp[len(item) - 1] = dp[len(item) - 2] + item[len(item) - 1]
for i in range(len(item) - 2,0,-1):
dp[i] = min(dp[i - 1] + item[i], dp[i] + item[i])
dp[0] = dp[0] + item[0]
#print(dp)
res = min(dp)
return res