一、题目
二、代码
//左侧的高度是动态的 形成凹槽就装水,相当于按行计算储水量
class Solution
{
public:
int trap(vector<int>& height)
{
int i,j;
int return_int=0;
stack<int> st;
st.push(0);
for(i=1;i<height.size();i++)
{
if(height[i]<height[st.top()])
{
st.push(i);
}
else if(height[i]==height[st.top()])
{
st.pop();
st.push(i);
}
else
{
while(!st.empty()&&height[i]>height[st.top()])
{
int h,w;
int mid_height=height[st.top()];
st.pop();
if(!st.empty())
{
h=min(height[i],height[st.top()])-mid_height;
w=i-st.top()-1;
return_int+=h*w;
}
}
st.push(i);
}
}
return return_int;
}
};