【Leetcode】【python】Trapping Rain Water
来源:互联网 发布:会员卡软件多少钱 编辑:程序博客网 时间:2024/06/06 15:52
题目大意
给定数组A,A[i]表示第i个位置的高度,求可以盛放雨水的容量。
解题思路
网上有多种思路,不尽相同但是思路类似,这里贴一个供参考。
参考:http://www.cnblogs.com/zuoyuan/p/3781453.html
开辟一个数组leftmosthigh,leftmosthigh[i]为A[i]之前的最高的bar值,然后从后面开始遍历,用rightmax来记录从后向前遍历遇到的最大bar值,那么min(leftmosthigh[i], rightmax)-A[i]就是在第i个bar可以储存的水量。例如当i=9时,此时leftmosthigh[9]=3,而rightmax=2,则储水量为2-1=1,依次类推即可。这种方法还是很巧妙的。时间复杂度为O(N)。
代码
class Solution(object): def trap(self, height): """ :type height: List[int] :rtype: int """ left_temp_max = [0 for i in range(len(height))] # 每个位置的左边最高值 left_max = 0 right_max = 0 for i in range(len(height)): if height[i] > left_max: left_max = height[i] left_temp_max[i] = left_max total = 0 for i in range(len(height)-1, -1, -1): if height[i] > right_max: right_max = height[i] if min(right_max, left_temp_max[i]) > height[i]: # 主要判断 total += min(right_max, left_temp_max[i]) - height[i] return total
总结
题目标签里还有stack,有空可以琢磨
阅读全文
0 0
- 【Leetcode】【python】Trapping Rain Water
- 【LeetCode with Python】 Trapping Rain Water
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [LeetCode]Trapping Rain Water
- LeetCode-Trapping Rain Water
- [leetcode] Trapping Rain Water
- [LeetCode] Trapping rain water
- Leetcode: Trapping Rain Water
- Leetcode:Trapping Rain Water
- [LeetCode] Trapping Rain Water
- <Leetcode>Trapping Rain Water
- Leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- leetcode Trapping Rain Water
- E0137 expression must be a modifiable lvalue
- Cordova 之 config.xml (Android)(三)
- OpenCV学习之旅——图片批量读取操作
- 云 MongoDB 优化让 LBS 服务性能提升十倍
- windows系统,AppData\Roaming文件夹,什么意思?mark undo
- 【Leetcode】【python】Trapping Rain Water
- uvalive 4288 Cat vs. Dog 求二分图的最大独立集
- CF 855A. Tom Riddle's Diary【water】
- log4j使用DailyRollingFileAppender
- 比较C语言与Java中的二维数组
- linux 系统下 如何运行 简单的 c程序
- GTX1050 Ti(notebook)+Ubuntu16.04上安装Cuda8.0
- IDEA安装gitflow插件(mac)
- Codeforces 862 E. Fire (01背包)