Leetcode OJ : Triangle 动态规划 python solution

本文介绍了一种求解三角形最小路径和的算法。通过动态规划的方式从顶点到底部,每次选择相邻节点中最小的数值进行累加,最终找到最小路径总和。文章还提供了一个使用Python实现的示例代码。

Total Accepted: 31557 Total Submissions: 116793

 
 

Given a triangle, find the minimum path sum from top to bottom.

Each step you may move to adjacent numbers on the row below.

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

The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

Note:
Bonus point if you are able to do this using only O(n) extra space,

where n is the total number of rows in the triangle.

简单的动态规划

 1 import sys
 2 
 3 class Solution:
 4     # @param triangle, a list of lists of integers
 5     # @return an integer
 6     def minimumTotal(self, triangle):
 7         length = len(triangle)
 8         l = [0]
 9         l.extend([ sys.maxint for x in range(length - 1)])
10         def getLastSum(y, x):
11             return l[x] if x in range(y+1) else sys.maxint
12         for y in range(length):
13             for x in range(y, -1, -1):
14                 l[x] = triangle[y][x] + min(getLastSum(y, x), getLastSum(y, x - 1))
15         return min(l)

 

转载于:https://www.cnblogs.com/ydlme/p/4295830.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值