zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):120 Triangle

    题目来源


    https://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.


    题意分析


    Input:一个三角矩阵

    Output:最短路径

    Conditions:使用O(n)空间


    题目思路


    首先初始化一个n大小的array,然后,初始化array为0,array[0]就是triangle的第一行的值,然后遍历剩余行,不断更新array,注意要从后往前遍历,否则会覆盖前面值。


    AC代码(Python)

     1 class Solution(object):
     2     def minimumTotal(self, triangle):
     3         """
     4         :type triangle: List[List[int]]
     5         :rtype: int
     6         """
     7         if len(triangle) == 0: return 0
     8         array = [0 for i in range(len(triangle))]
     9         array[0] = triangle[0][0]
    10         for i in range(1,len(triangle)):
    11             for j in range(len(triangle[i]) - 1, -1, -1):
    12                 if j == len(triangle[i]) - 1:
    13                     array[j] = array[j - 1] + triangle[i][j]
    14                 elif j == 0:
    15                     array[j] = array[j] + + triangle[i][j]
    16                 else:
    17                     array[j] = min(array[j-1], array[j]) + triangle[i][j]
    18         return min(array)
    19         
  • 相关阅读:
    JS实现在线ps功能
    Vmware 下安装linux虚拟机
    一文了解:Redis主从复制
    一文了解:Redis过期键删除策略
    一文了解:Redis的AOF持久化
    一文了解:Redis的RDB持久化
    一文了解:Redis事务
    一文了解:Redis基础类型
    并发一:Java内存模型和Volatile
    干了这杯java之ThreadLocal
  • 原文地址:https://www.cnblogs.com/loadofleaf/p/5523978.html
Copyright © 2011-2022 走看看