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
最新推荐文章于 2020-08-24 17:46:40 发布