leetcode记录2. Trapping Rain Water
Category | Difficulty | Likes | Dislikes |
---|
algorithms | Hard (44.24%) | 4173 | 77 |
√ Accepted
√ 315/315 cases passed (4 ms)
√ Your runtime beats 95.99 % of cpp submissions
√ Your memory usage beats 8.86 % of cpp submissions (9.5 MB)
class Solution {
public:
int trap(vector<int>& height) {
stack<int> s;
int result = 0;
if (height.size() <= 2)
{
return 0;
}
s.push(0);
for (int i = 1; i < height.size(); i++)
{
int h = s.top();
if (height[i] > height[h])
{
if(s.size() == 1)
{
s.pop();
s.push(i);
}
else
{
s.pop();
result += min(height[s.top()]-height[h], height[i]-height[h]) * (i-s.top()-1);
if (height[s.top()] > height[i])
{
s.push(i);
}
else
{
i--;
}
}
}
else
{
s.push(i);
}
}
return result;
}
};