Trapping Rain Water
来源:互联网 发布:淘宝客现状 编辑:程序博客网 时间:2024/06/07 03:54
Given n non-negative integers representing anelevation map where the width of each bar is 1, compute how much water it isable to trap after raining.
For example,
Given [0,1,0,2,1,0,1,3,2,1,2,1]
,return 6
.
思路:逐个点算当前可以存储的最大容量。这里容量算的时候需要考虑左边的最高点和后面最高点,这两个最高点中较小的那个减去A[i]为当前A[i]可以存储的水容量。而求A[i]对应的左边最高点和右边最高点相当于算A[i]之前的最大值,以及A[i]之后的最大值。需要从左到右,以及从右到左分别走一趟来计算。
Ref:http://blog.csdn.net/wzy_1988/article/details/17752809
class Solution {public:int trap(int A[], int n) { //注意这里A为空,以及n=0是两种不同的情况 if (A == NULL || n == 0) { return 0; } vector<int> left(n, 0); vector<int> right(n, 0); left[0] = A[0]; right[n-1] = A[n-1]; int max = A[0]; for(int i = 1; i < n; i++) { if (A[i] <= max) { left[i] = max; } else if (A[i] > max) { left[i] = A[i]; max = A[i]; } } max = A[n-1]; for (int i = n-2; i>=0; i--) { if (A[i] <= max) { right[i] = max; } else if (A[i] > max) { right[i] = A[i]; max = A[i]; } } int result = 0; for (int i = 0; i < n; i++) { result += (min(left[i], right[i]) - A[i]); } return result; }};
0 0
- LeetCode: Trapping Rain Water
- LeetCode : Trapping Rain Water
- Trapping Rain Water
- [LeetCode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- [Leetcode] Trapping Rain Water
- Trapping Rain Water
- Trapping Rain Water
- [LeetCode]Trapping Rain Water
- Trapping Rain Water
- Trapping Rain Water
- LeetCode-Trapping Rain Water
- Trapping Rain Water
- [leetcode] Trapping Rain Water
- Trapping Rain Water
- [LeetCode] Trapping rain water
- Leetcode: Trapping Rain Water
- 38 - Trapping Rain Water
- Unique Paths II
- 时频分析和MATLAB中的实现
- WordPress调用站外文章解决方法
- java中调用存储过程或函数
- 设想2015年,云计算厂商将与线下渠道紧密合作
- Trapping Rain Water
- java内部类回顾之一般内部类实现多继承和封装性
- 用迭代法求平方根
- STL简单构成
- Mongodb–journal探究
- Gas Station
- Jdk1.7环境变量的配置
- poj3278 Catch That Cow(BFS)
- 网页任意浮动广告