力扣120题 三角形最小路径和

这题采用dp的方式,当前值加上下面相邻节点的最小值。

class Solution:
    def minimumTotal(self, triangle):
        if not triangle:return 0                                #边界判断,如果数组为空,即为0
        res = triangle[-1]                                      #dp,先缓存最后一组数据,从下往上计算
        #print(res)
        for i in range(len(triangle)-2,-1,-1):                  #从下往上开始计算
            for j in range(len(triangle[i])):                   #从左往右遍历
                res[j] = min(res[j],res[j+1]) + triangle[i][j]  #将左右节点最小的再加上当前值进行缓存
                #print(res[j],end=',')
            #print(res)
        return res[0]
if __name__ == '__main__':
    solution = Solution()
    triangle = [
                 [2],
                [3,4],
               [6,5,7],
              [4,1,8,3]
            ]
    result = solution.minimumTotal(triangle)
    print(result)

 

posted @ 2019-09-03 16:36  weilongyitian  阅读(307)  评论(0编辑  收藏  举报