https://leetcode.com/problems/trapping-rain-water/
1. 首先我们遍历数组,找到数组中的最高点
2. 然后我们分两次遍历,从左到最高点,从右到最高点
3. cur 代表左边最高点,如果右边比它小,那么可以剩水。如果右边比它大,那么更新cur的值。
4. 如3所示,不过是从右边开始遍历。
~~~~~~ 感谢大神能够提供如此简单易懂的解法
class Solution {
public:
int trap(vector<int>& height) {
if(height.size() <=2)
return 0;
int max_ = 0;
int max_index = 0;
for(int i=0; i<height.size(); i++)
if(height[i] > max_)
{
max_ = height[i];
max_index = i;
}
int cur = height[0];
int len = height.size();
int area = 0;
for(int i=1; i<max_index; i++)
{
if(cur < height[i])
cur = height[i];
else
area += (cur-height[i]);
}
cur = height[len-1];
for(int i = len-2; i>max_index; i--)
{
if(cur < height[i])
cur = height[i];
else
area +=(cur-height[i]);
}
return area;
}
};