• LintCode Python 简单级题目 109.数字三角形


    原题描叙 :

    给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。

     注意事项

    如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。

    样例

    比如,给出下列数字三角形:

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

    从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。

    题目分析:

    思路:

      从二维数组的倒数第二行开始往上,每一行的元素改为下一行能与之相加的两个数较小者与其相加之后的和,如题中给出的例子,步骤为:

      

      [                                 [            [
           [2],              [2],          [11]
          [3,4],    →        [9,10]   →     ]
         [7,6,10]           ]
      ]

    参照:http://www.cnblogs.com/xiaocainiao2hao/p/5359892.html

    class Solution:
        """
        @param triangle: a list of lists of integers.
        @return: An integer, minimum path sum.
        """
        def minimumTotal(self, triangle):
            # write your code here
            n = len(triangle)
            if triangle is None:
                return None
            elif triangle[0][0] is None:
                return None
            elif n == 1: # 此处if分支可省略
                return triangle[0][0]
                
            # 将triangle[i+1][j]和triangle[i+1][j+1]中的小值加到上一行的triangle[i][j]中
            for i in range(n-2,-1,-1):
                le = len(triangle[i])
                for j in range(0,le):
                    minx = min(triangle[i+1][j],triangle[i+1][j+1])
                    triangle[i][j] += minx
            return triangle[0][0]
    

      

  • 相关阅读:
    bootstrapValidator表单验证插件
    sublime自动保存(失去焦点自动保存)
    js、jquery实现放大镜效果
    mysql 添加索引语句
    mybatis sql语句中的foreach标签
    android ListView 刷新卡顿问题
    JFrame 桌面右下角弹窗
    取没有date的邮件发送时间
    java 判断图片是否损坏
    java 后台poi导入导出Excel到数据库
  • 原文地址:https://www.cnblogs.com/bozhou/p/6945947.html
Copyright © 2020-2023  润新知