LeetCode:Trapping Rain Water
来源:互联网 发布:淘宝达人怎么修改资料 编辑:程序博客网 时间:2024/05/18 02:54
Trapping Rain Water
Total Accepted: 68935 Total Submissions: 211305 Difficulty: Hard
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water
it is able to trap after raining.
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1]
, return 6
.
The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped.
Thanks Marcos for contributing this image!
Subscribe to see which companies asked this question
Hide Similar Problems
思路一:
观察水的分布可发现,水位的分布情况显现梯形的,即先上升后下降。
因此可以先求出最高点,然后左右两边往中间遍历求水的容量。
c++ code:
class Solution {public: int trap(vector<int>& height) { int size = height.size(); int maxIndex = 0; for(int i=0;i<size;i++) { if(height[i] > height[maxIndex]) maxIndex = i; } int area = 0; int maxLeft = 0; for(int i=0;i<maxIndex;i++) { if(height[i] > maxLeft) maxLeft = height[i]; else area += maxLeft - height[i]; } int maxRight = 0; for(int i=size-1;i>=maxIndex;i--) { if(height[i] > maxRight) maxRight = height[i]; else area += maxRight - height[i]; } return area; }};
思路二:
直接用两个指针分别往中间移动,每次维持次高的水位secHeight。
java code:
public class Solution { public int trap(int[] height) { int len = height.length; int left = 0, right = len - 1; int secHeight = 0; int area = 0; while(left <right) { if(height[left] < height[right]) { secHeight = Math.max(secHeight, height[left]); area += secHeight - height[left]; left++; } else { secHeight = Math.max(secHeight, height[right]); area += secHeight - height[right]; right--; } } return area; }}
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
- Android的线程和线程池
- 数据库&MYSQL&JDBC
- mysql -uroot -proot tc -e "select * from merchandise limit 1"这个-E的命令作用是什么,用来什么什么的?
- java的常见异常与错误总结
- libuv学习笔记(2)
- LeetCode:Trapping Rain Water
- 没有到主机的路由
- mysql免密码登录, 及使用-e 参数执行sql脚本
- 云计算基本原理
- 关闭linux命令行屏幕保护
- 大学软件工程总结
- CSS child selector
- JVM安全性解析
- get提交数据