题目来源于力扣
理论基础
动态规划
三角形的最小路径和
题目描述
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。
示例
例如,给定三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
自顶向下的最小路径和为11(即 2+3+5+1= 11)。
解题思路
动态规划,自底向上累加,“每一步只能移动到下一行中相邻的结点上” 是关键
Python 解法
class Solution(object):
def minimumTotal(self, triangle):
if not triangle: return 0
res = triangle[-1] # 最后一组元素
for i in xrange(len(triangle) - 2, -1, -1): # 倒序循环
for j in xrange(len(triangle[i])): # 每一层从0开始
res[j] = min(res[j], res[j+1]) + trangle[i][j]
return res[0]
© 著作权归作者所有
举报
发表评论
0/200