zoukankan      html  css  js  c++  java
  • [leetcode]Triangle @ Python

    原题地址:https://oj.leetcode.com/problems/triangle/

    题意:

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

    For example, given the following triangle

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

    The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

    Note:
    Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.

    解题思路:使用动态规划(dp)。需要注意的是从后往前更新!

    代码:

    class Solution:
        # @param triangle, a list of lists of integers
        # @return an integer
        def minimumTotal(self, triangle):
            if len(triangle) == 0: return 0
            array = [0 for i in range(len(triangle))]
            array[0] = triangle[0][0]
            for i in range(1, len(triangle)):
                for j in range(len(triangle[i]) - 1, -1, -1):
                    if j == len(triangle[i]) - 1:
                        array[j] = array[j-1] + triangle[i][j]
                    elif j == 0:
                        array[j] = array[j] + triangle[i][j]
                    else:
                        array[j] = min(array[j-1], array[j]) + triangle[i][j]
            return min(array)
  • 相关阅读:
    【poj2761】 Feed the dogs
    【bzoj1086】 scoi2005—王室联邦
    学堂在线
    【bzoj3757】 苹果树
    【uoj58】 WC2013—糖果公园
    博弈论学习笔记
    【poj2960】 S-Nim
    【poj2234】 Matches Game
    【poj1740】 A New Stone Game
    【bzoj1853】 Scoi2010—幸运数字
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3766365.html
Copyright © 2011-2022 走看看