class Solution {
public:
int trap(vector<int>& height) {
int ans=0;
stack<int>skt;
int n=height.size();
for(int i=0;i<n;i++)
{
while(skt.size()&&height[i]>=height[skt.top()])//单调递增栈
{
int cur=skt.top();//记录此时栈顶元素
skt.pop();
if(skt.empty())break;//如果此时为空就意味着两个柱子之间的体积算完了;或者不存在;
ans+=(i-skt.top()-1)*(min(height[skt.top()],height[i])-height[cur]);//算高度差*宽度
}
skt.push(i);//压入下标
}
return ans;
}
};
letcode 42. 接雨水
最新推荐文章于 2024-09-27 14:37:08 发布