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)
  • 相关阅读:
    [hdu1402]A * B Problem Plus(NTT)
    拦截导弹问题(Noip1999)
    删数问题(Noip1994)
    1217:棋盘问题
    随笔功能测试
    教师派8
    教师派7
    教师派6
    教师派5
    教室派4
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3766365.html
Copyright © 2011-2022 走看看