leetcode 120 Triangle 三角形最小路径和 python 动规

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。
'''
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle

[
     [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.

'''


class Solution:
    def minimumTotal(self, triangle: List[List[int]]) -> int:

        # Approach one
        # 与比较两个字符串的最长公共字串的思路完全一致。
        # 确定最小子问题、确定边界条件,确定状态转移方程
        # dp = triangle[-1]
        # for i in range(len(triangle)-2, -1,-1):
        #     for j in range( len(triangle[i])):
        #         dp[j] = triangle[i][j] + min(dp[j],dp[j+1])
        # return dp[0]


        # 重新实现
        if not triangle: return
        for i in range(len(triangle)-1, 0,-1):
            for j in range( len(triangle[i])-1):
                 triangle[i-1][j] += min(triangle[i][j],triangle[i][j+1])
        return triangle[0][0]

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值