欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

120. Triangle 三角形的最短路径

程序员文章站 2022-04-01 16:53:43
...
  1. 从下往上遍历,辅助数组的元素表示从最底层开始到达该结点的最短路径。
  2. 第level层的下标从0到level
  3. 第[level,i]往下相邻的相邻的结点为[level+1][i]和[level+1][i+1]
    def minimumTotal(self, triangle):
        """
        :type triangle: List[List[int]]
        :rtype: int
        """
        if not triangle:
            return 0
        m = len(triangle)
        # 辅助数组的元素表示从最底层往上,到达该点所需的最小sum
        res = triangle
        # 最后一层不需要计算,等于原数组本身,从m-2开始
        for level in range(m-2, -1, -1):
            for i in range(level + 1): #第level层的下标从0到level
                res[level][i] = min(res[level+1][i], res[level+1][i+1]) + triangle[level][i]
        return res[0][0]