zoukankan      html  css  js  c++  java
  • 接雨水

    题目:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
    上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
    示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1]  输出: 6

    来源:https://leetcode-cn.com/problems/trapping-rain-water/

    法一:自己的代码

    思路:遍历第二个至倒数第一个,每次求出要遍历元素的左右两边的最大值,再取最小值,累积求和

    class Solution:
        def trap(self, height) -> int:
    
            all_water, i = 0, 1
            while i < len(height)-1:
                every_water = ( min(max(height[:i]),max(height[i+1:]))) - height[i]
                if every_water > 0:
                    all_water = all_water + every_water
                print( i , all_water)
                i = i+1
            return all_water
            # all_water, i = 0, 1
            # while i < len(height) - 1:
            #     l = max(height[:i])
            #     r = max(height[i+1:])
            #     if l > height[i]:
            #         if r > height[i]:
            #             every_water = min(r, l) - height[i]
            #             all_water = every_water + all_water
            #     i = i+1
            # return all_water
    
    if __name__ == '__main__':
        duixiang = Solution()
    
        ww = duixiang.trap([0,1,0,2,1,0,1,3,2,1,2,1])
        print('结果是:', ww)
    View Code
  • 相关阅读:
    ArrayList类(转)
    通过XmlDocument读写Xml文档(转)
    js的一些常用方法
    和我一起恶补pl/sql(第三讲)
    js的跑步算法
    细说 Form (表单)(转)
    C#反射设置和读取类的属性
    显示最近30天的记录vs显示这个月的记录(pl\sql)
    nyist 637 我和你
    nyist 子串和
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11382284.html
Copyright © 2011-2022 走看看