class Solution:
def minimumTotal(self, triangle):m = len(triangle)
l = triangle
for i in range(1, m):
for j in range(i + 1): if j == 0:
l[i][0] = l[i - 1][0] + l[i][0]
elif j == i:
l[i][i] = l[i - 1][i - 1] + l[i][i]
else:
l[i][j] = min(l[i - 1][j], l[i - 1][j - 1]) + l[i][j]
return min(l[m - 1][:])
2/自下往上
class Solution:
def minimumTotal(self, triangle):
f = [0] * (len(triangle) + 1)
for row in triangle[::-1]:
for i in range(len(row)):
f[i] = row[i] + min(f[i], f[i + 1])
return f[0]