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         
  • 相关阅读:
    Go-15-flag.String 获取系统参数
    Go-14-解决 go get golang.org/x/text 拉取失败问题
    Go-08-函数与指针
    redis 学习(6)-- 集合类型
    redis 学习(5)-- 列表类型
    redis 学习(4)-- 哈希类型
    redis 学习(3)-- String 类型
    redis 学习(二)-- 通用命令
    redis 学习(1)-- redis 安装与启动
    Mysql 索引原理及优化
  • 原文地址:https://www.cnblogs.com/loadofleaf/p/5523978.html
Copyright © 2011-2022 走看看