zoukankan      html  css  js  c++  java
  • leetcode120

     1 import sys
     2 class Solution:
     3     def minimumTotal(self, triangle: 'List[List[int]]') -> int:
     4         row = len(triangle)
     5         if row == 1:
     6             return triangle[0][0]
     7         minval = sys.maxsize
     8         dp = [[sys.maxsize for _ in range(row+1)]for _ in range(row+1)]
     9         dp[1][1] = triangle[0][0]
    10         col = 2
    11         for i in range(2,row+1):
    12             col += 1
    13             for j in range(1,col):
    14                 dp[i][j] = min(dp[i-1][j-1],dp[i-1][j]) + triangle[i-1][j-1]
    15                 if i == row:
    16                     minval = min(minval,dp[i][j])
    17         
    18         return minval

    初始化dp所有单元格为maxsize值,定义dp[1][1]表示第一层第一列,是三角中的顶部元素2。

    从第二行开始,每个单元格取其左上角和正上方两个单元格中的较小的值,再加上当前节点的值。

    则最后一行中的最小值,即为所求。

  • 相关阅读:
    枚举类 --单例模式
    模板设计模式
    动态代理
    反射应用--修改属性值
    通过反射绕过泛型
    java反射
    网络编程练习
    TCP编程
    GUI 聊天界面
    UDP传输多线程
  • 原文地址:https://www.cnblogs.com/asenyang/p/12022112.html
Copyright © 2011-2022 走看看