class Solution(object):
def minimumTotal(self, triangle):
"""
:type triangle: List[List[int]]
:rtype: int
"""
n=len(triangle)
dp=[0]*n
dp[0]=triangle[0][0]
for i in range(1,n):
for j in reversed(range(i+1)):
if j==0:
dp[j]+=triangle[i][j]
elif j==i:
dp[j]=dp[j-1]+triangle[i][j]
else:
dp[j]=min(dp[j-1],dp[j])+triangle[i][j]
return min(dp)
def minimumTotal(self, triangle):
"""
:type triangle: List[List[int]]
:rtype: int
"""
n=len(triangle)
dp=[0]*n
dp[0]=triangle[0][0]
for i in range(1,n):
for j in reversed(range(i+1)):
if j==0:
dp[j]+=triangle[i][j]
elif j==i:
dp[j]=dp[j-1]+triangle[i][j]
else:
dp[j]=min(dp[j-1],dp[j])+triangle[i][j]
return min(dp)