博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python/M/120】Triangle
阅读量:2172 次
发布时间:2019-05-01

本文共 761 字,大约阅读时间需要 2 分钟。

题目

这里写图片描述

基本思路

这是典型的动态规划问题

我们需要做的是从三角形的最后一行开始不断向上累加最小的值,现在我们换一个角度来看我们的三角形

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

最后一行的元素就作为我们的dp数组,从倒数第二行的第一个元素6开始,6可以和下一行的,4,1两个数字进行相加,同时可以发现可以和他相加的这两个数字的坐标一个和6相同,一个比6的坐标大1,所以我们得出公式:

// 一般动态规划问题,公式出来了就已经全部解决了。dp[j] = triangle[i][j] + min(dp[j], dp[j + 1])

这个相加过程可以具体理解为

// 请从下往上观看  [11,10,10,3]  [9,10,10,3]  [7,6,10,3]  [4,1,8,3]

实现代码

class Solution:    def minimumTotal(self, triangle):        """        :type triangle: List[List[int]]        :rtype: int        """        # 从后往前使用动态规划        length = len(triangle)        if length == 0:            return 0        dp = triangle[-1]        for i in range(length-2,-1,-1):            for j in range(i+1):                dp[j] = triangle[i][j] + min(dp[j],dp[j+1])        return dp[0]
你可能感兴趣的文章
(PAT 1143) Lowest Common Ancestor (二叉查找树的LCA)
查看>>
(PAT 1061) Dating (字符串处理)
查看>>
(PAT 1118) Birds in Forest (并查集)
查看>>
数据结构 拓扑排序
查看>>
(PAT 1040) Longest Symmetric String (DP-最长回文子串)
查看>>
(PAT 1145) Hashing - Average Search Time (哈希表冲突处理)
查看>>
(1129) Recommendation System 排序
查看>>
PAT1090 Highest Price in Supply Chain 树DFS
查看>>
(PAT 1096) Consecutive Factors (质因子分解)
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>