class Solution {
public:
int trap(vector<int>& height) {
vector<int> left_max_height(height.size(), 0);
vector<int> right_max_height(height.size(), 0);
left_max_height[0] = height[0];
for (int i = 1; i < height.size(); i++)
{
// 最大的元素就是当前元素和前一个元素的最大值。
left_max_height[i] = max(height[i], left_max_height[i-1]);
}
// 寻找最大元素这个思想要牢记,当前元素和最大元素的比较,最大元素肯定就是上一个元素。
right_max_height[height.size()-1] = height[height.size() - 1];
for (int i = height.size() - 2; i >= 0; i--)
{
// 最大的元素就是当前元素和后一个元素的最大值。
right_max_height[i] = max(height[i], right_max_height[i + 1]);
}
int sum = 0;
for (int i = 0; i < height.size(); i++)
{
int count = min(left_max_height[i], right_max_height[i]) - height[i];
sum += count;
}
return sum;
}
};
10-30
114
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-26
942
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-28