[LeetCode]120 三角形最小路径和

题目描述

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

例如,给定三角形:

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def minimumTotal(self, triangle):
"""
:type triangle: List[List[int]]
:rtype: int
"""
dp = copy.deepcopy(triangle[-1])
n = len(triangle)
for l in range(n - 2, -1, -1):
for i in range(l + 1):
dp[i] = min(dp[i], dp[i + 1]) + triangle[l][i]
return dp[0]