接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

输入:height = [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 个单位的雨水(蓝色部分表示雨水)。
示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

题解


python code

class Solution:def trap(self, height: List[int]) -> int:# 记录柱子的个数length = len(height)# 记录每个柱子左侧最大高度l_list = list()# 记录每根柱子右侧最大高度r_list = list()# 默认第一个柱子的 左侧最大高度为0l_height = 0# 默认最后一个柱子的 右侧最大高度为0r_height = 0# 计算每根柱子左侧的最大高度for val in height:if not l_list:l_list.append(l_height)l_height = valelse:l_list.append(l_height)if val > l_height:l_height = val# 计算每根柱子右侧的最大高度for i in range(length-1, -1, -1):if not r_list:r_list.append(r_height)r_height = height[i]else:r_list.append(r_height)if height[i] > r_height:r_height = height[i]r_list = r_list[::-1]result = 0# 循环遍历for k, v in enumerate(height):# 取左边最大高度 和 右边最大高度的最小值 减去 当前元素的值# 如果小于0  则赋值为0 如果大于0 则为当前柱子的存水量num = min(r_list[k], l_list[k]) - vval = num if num > 0 else 0result += valreturn result

python 接雨水相关推荐

  1. python实现图结构github_Github项目+代码:新型深度网络体系结构去除图像中的雨水痕迹...

    雨水痕迹会严重降低图像能见度,导致许多当前的计算机视觉算法无法工作.因此去除图像中的雨水是有必要的. 北京大学等研究团队提出了一种基于深度卷积和递归神经网络的新型深度网络体系结构,用于单图像去除. 由 ...

  2. 【栈】python、单调栈解决收集雨水问题、力扣42题

    以下是leetcode 42原题: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1 ...

  3. 【Python】收集雨水问题:给定n个非负整数,表示直方图的方柱的高度,同时,每个方柱的宽度假定都为1。若使用这样形状的容器收集雨水,可以盛多少水量?

    收集雨水问题 给定n个非负整数,表示直方图的方柱的高度,同时,每个方柱的宽度假定都为1.若使用这样形状的容器收集雨水,可以盛多少水量? 如输入:0,1,0,2,1,0,1,3,2,1,2,1:返回6. ...

  4. python【力扣LeetCode算法题库】42-接雨水(双指针法)

    42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这 ...

  5. python 水位_Leetcode 42. 接雨水 - python - 递归 查找分水岭

    题目概括 黑色的是柱子,蓝色的是水. 求最多能盛多少水. 解法 有很多解法,比如扫描数组,算出每个位置上到左边.右边的最高柱子的高度, O(n)时间复杂度 下面的解法是找分水岭,比如从左往右遍历,只要 ...

  6. LeetCode 42 Hard 收集雨水I Python

    def trap(self, height):"""My Method算法:左右指针思路:思路类似于407题,想象水从周围一点一点漫上去,涨起来~对某个位置i来说,其能容 ...

  7. 2020 年最全 Python 面试题汇总 (五)

    @Author:Runsen 文章目录 81.逆序对 82.手写一个栈 83.有效的扩号 84.扩号的生成 85.最长有效括号 86.比特位计数问题 87.判断给定的数是否为丑数 88.找出第 n 个 ...

  8. python公历转农历_Python如何实现阳历转阴历的方法分享

    这篇文章主要介绍了Python实现公历(阳历)转农历(阴历)的方法,涉及农历算法原理及Python日期运算相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现公历(阳历)转农历(阴历)的 ...

  9. python与正则表达式(part1)--元字符

    本系列BLOG为鄙人学习python时的学习笔记. 文章目录 元字符使用 普通字符 或关系ß(从此知识点开始就是特殊字符了) 匹配单个字符 匹配字符集 匹配字符集反集 匹配字符串开始位置 匹配字符串的 ...

最新文章

  1. 洛谷P1832 A+B Problem(再升级)
  2. 【赠书】如何构建企业级的推荐系统?这本书值得一看
  3. 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟
  4. 信息系统项目管理师-信息系统立项管理核心知识点思维脑图
  5. The world at your fingertips — 天涯明月刀幕后24(疏离)
  6. 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的
  7. ES6(三)——回调地狱和promise异步任务顺序执行(传参、错误处理)
  8. opensips mysql 版本_Opensips-1.11版本安装过程
  9. PAT题目中用到的一些C++便捷函数记录
  10. POJ-1004-Financial Management
  11. JMETER 不同线程组 变量值 的参数传递(转)
  12. Python微信打飞机游戏编程学习笔记04
  13. 从人体3D建模和测量入手,云之梦要用虚拟试衣解放量体师和服装导购员
  14. 5.12 利用图层蒙版制作图像合成特效 [原创Ps教程]
  15. 关于自定View的ViewGroup (嵌套View)
  16. Linux -- 代理服务器(Squid Server)的配置与应用2
  17. 地铁与日本移动互联网
  18. PowerBI软件的power query编辑栏和高级编辑器中文显示乱码解决办法
  19. 图像处理的Dither和Banding
  20. yarn 修改国内镜像

热门文章

  1. max函数的平滑(log-sum-exp trick)
  2. python笔记: 生成器
  3. R语言实战应用精讲50篇(十一)-单因素方差分析 | 事后两两多重比较 | 趋势方差分析
  4. 基于云计算的海量数据挖掘
  5. Matlab中typecast函数由int8转换为int32
  6. Python编程基础:第四十一节 继承Inheritance
  7. 携程在线风控系统架构
  8. 最小二乘拟合,L1、L2正则化约束--转
  9. eclipse使用tomcat进行部署时编译代码不一致的处理
  10. Spark:一个高效的分布式计算系统--转