LeetCode Trapping Rain Water
来源:互联网 发布:c语言和指针下载 编辑:程序博客网 时间:2024/06/04 00:26
LeetCode解题之Trapping Rain Water
原题
计算一个凹凸不平的模型中可以存放多少的雨水。以下图为例,黑色的地方是砖块,蓝色的地方是积水。
注意点:
- 给的参数数组表示的是砖块的高度(它自身也要占面积),不只是边
- 不会存在负数的情况
例子:
输入: height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
注:具体看上图
解题思路
这题与 Container With Most Water 非常相似,但那题只需要求出面积最大的积水处,而现在要找到所有的积水处的总和。现在考虑任意的一个块砖它上面最终的积水高度是如何求的,我们需要找到它左右两边的最高的砖块,而它最终的高度就是这两个砖块中较矮的那个。所有我们需要先遍历来得到每个砖块左右最高砖块的高度,最后根据这两个高度来确定最终的高度。下面的代码先从后往前遍历得到右边的最高高度,然后从前往后遍历得到左边的最高高度,同时得到两者中小的一个加入总和。
AC源码
class Solution(object): def trap(self, height): """ :type height: List[int] :rtype: int """ if not height: return 0 length = len(height) maxh = [0 for __ in range(length)] h = height[length - 1] for i in range(length - 2, -1, -1): maxh[i] = h h = max(h, height[i]) h = height[0] result = 0 for i in range(1, length - 1): h = max(h, height[i]) result += max(0, min(h, maxh[i]) - height[i]) return resultif __name__ == "__main__": assert Solution().trap([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]) == 6
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- 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
- LeetCode Trapping Rain Water
- LeetCode | Trapping Rain Water
- 玩家信息管理(SQLite+Fragment加强)
- 在XCode中添加自定义的代码片段
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
- spring 依赖注入
- MySQL的SSL加密连接与性能开销
- LeetCode Trapping Rain Water
- 应用层—万维网WWW
- 昨日股市暴跌熔断 赵薇亏3.3亿赔惨了(如何预测今年股市走向)
- phonegap(cordova) 自定义插件代码篇(三)----支付宝支付工具整合
- 深度学习总结
- 50.Best Time to Buy and Sell Stock II(贪心算法)
- jquery的.on()支持的事件
- 轻松学习之 IMP指针的作用
- ThinkPHP & jQuery.ajax 登录功能,无法重定向,自动刷新