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

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

    题目大意

    给定一个三角形的矩阵,给出总三角形顶部到底部的最短路径的值

    解题思路

    从上层开始,计算到达每个元素时的最短路径的值,并特殊化处理边缘的值;且更新每一行最短路径的值时,从末端往前更新

    代码

    class Solution(object):
        def minimumTotal(self, triangle):
            """
            :type triangle: List[List[int]]
            :rtype: int
            """
            sums = [0 for i in range(len(triangle))]
            sums[0] = triangle[0][0]
    
            for i in range(1, len(triangle)):
                for j in range(len(triangle[i]) - 1, -1, -1):
                    if j == 0:
                        sums[j] = sums[j] + triangle[i][j]
                    elif j == len(triangle[i]) - 1:
                        sums[j] = sums[j - 1] + triangle[i][j]
                    else:
                        sums[j] = min(sums[j], sums[j - 1]) + triangle[i][j]
            return min(sums)  
    
  • 相关阅读:
    ASP.NET 2.0
    PHP
    SQL 查询逻辑处理顺序
    LEETCODE
    网络学习课程资源
    概率论
    集合论
    图论
    《组合数学》
    离散数学
  • 原文地址:https://www.cnblogs.com/slurm/p/5318825.html
Copyright © 2011-2022 走看看