三角形最小路径和

https://leetcode-cn.com/explore/interview/card/bytedance/246/dynamic-programming-or-greedy/1030/

image.png

动态规划,找规律吧少年。
其实规律也很好发现,从最后一层往上找,上一层的最小路径,是下一层左右两个节点的最小值加上当前节点的值,这样遍历到第一个节点就好了。
题目要用O(n)空间复杂度,n为三角形高度。其实额外的空间最大的就是最后一层数组的长度,恰好也等于三角形高度,满足需求

class Solution(object):
    def minimumTotal(self, triangle):
        """
        :type triangle: List[List[int]]
        :rtype: int
        """
        if not triangle:
            return 0
        pos = triangle[-1]
        for i in range(len(triangle)-2,-1,-1):
            for j in range(0,len(triangle[i])):
                pos[j] = min(pos[j],pos[j+1])+triangle[i][j]
        return pos[0]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容