class Solution {
public:
int trap(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> height(n);
for (int i = 0; i < n; ++i)
{
height.push_back(A[i]);
}
int maxHeight = 0;
vector<int> leftArr(height.size());
for (int i = 0; i < height.size(); ++i)
{
leftArr[i] = maxHeight;
if (height[i] > maxHeight)
maxHeight = height[i];
}
maxHeight = 0;
vector<int> rightArr(height.size());
for (int i = height.size() - 1; i >= 0; --i)
{
rightArr[i] = maxHeight;
if (height[i] > maxHeight)
maxHeight = height[i];
}
int water = 0;
for (int i = 0; i < height.size(); ++i)
{
int temp = min(leftArr[i], rightArr[i]) - height[i];
if (temp > 0)
water += temp;
}
return water;
}
};
[Leetcode] Trapping Rain Water
雨水捕获算法
最新推荐文章于 2021-11-04 09:56:06 发布
本文介绍了一种用于计算二维高度图中能捕获多少雨水的算法。通过预先计算每个位置左侧和右侧的最大高度,该算法有效地确定了每个位置可以捕获的雨水量。

373

被折叠的 条评论
为什么被折叠?



