LintCode:接雨水
来源:互联网 发布:冒泡排序javascript 编辑:程序博客网 时间:2024/04/28 18:48
给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。
接雨水
您在真实的面试中是否遇到过这个题?
Yes
样例
如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 6.
挑战
O(n) 时间, O(1) 空间
O(n) 时间, O(n) 空间也可以接受
标签 Expand
相关题目 Expand
解题思路:
方法1:O(n)时间,O(n)空间
该点雨水的存储,实际就是该点就是取左边最大值和右边最大值得更小的,减去改点的高度。
从左像右扫描,记录左边最大值,从右向左扫描记录右边最大值。
方法2:左右指针夹逼
该点雨水的存储,实际就是该点就是取左边最大值和右边最大值得更小的,减去改点的高度。
2个指针,一个在头,一个在尾。由于他们2者之间肯定有个最高点,相当于左指针的右最大值,相当于右指针的左最大值。
扫描一遍即可。
public class Solution { /** * @param heights: an array of integers * @return: a integer */ public int trapRainWater(int[] heights) { // write your code here int res = 0; if(heights==null||0==heights.length) return res; int len = heights.length; int l = 0 ; int r = len-1; int lmax = 0; int rmax = 0; while(l<r){ lmax = Math.max(lmax, heights[l]); rmax = Math.max(rmax, heights[r]); if(lmax>rmax){ res += rmax-heights[r]; r--; }else{ res += lmax-heights[l]; l++; } } return res; }}
0 0
- LintCode-接雨水
- LintCode:接雨水
- LintCode:接雨水
- 接雨水 lintcode
- lintcode[363]:接雨水
- LintCode:M-接雨水
- 接雨水-LintCode
- 接雨水 II-LintCode
- LintCode rain trap 接雨水
- [LintCode 363] 接雨水(Python)
- 雨水,lintcode
- **[Lintcode]Trapping Rain Water 接雨水
- lintcode刷题——接雨水
- 接雨水
- 接雨水
- 接雨水
- 接雨水问题(C++)
- 接雨水问题
- 关于打包自定义标签,并导入项目使用时,出现java.lang.NoClassDefFoundError: JspException异常,解决方法和注意事项!
- LintCode:排颜色 II
- 【洛谷T577】【模板】template 最短路 SPFA+dij
- 如何用Swift实现一个好玩的弹性动画
- 【SSH项目实战】国税协同平台-16.登录过滤器
- LintCode:接雨水
- 检查网络状态信息的API
- LintCode:搜索旋转排序数组
- C++对象模型--默认构造函数
- 这样的简历,到哪里都是被淘汰的命!
- JRE System Library [jdk1.7]和Server Library [Apache Tomcat v6.0]为绑定错误解决方案
- IoC
- Linux之命令的组合
- 给Openwrt安装polipo