您的位置:首页 > 其它

Leetcode 之Largest Rectangle in Histogram(40)

2016-05-28 14:22 274 查看
int largestRect(vector<int> &height)
{
stack<int> s;//定义一个单调递增栈
height.push_back(0);//定义单调递增栈的最后一个
int result = 0;//记录当前最大的面积
for (int i = 0; i < height.size();)//满足条件i才递增
{
if (s.empty() || height[i]>s.top())
{
s.push(i++);//只有当前元素大于栈顶元素是才入栈相应的序号,构造递增栈
}
else {
//当前元素小于栈顶元素时
int tmp = s.top();//保留栈顶元素
s.pop();//弹出直至当前元素大于栈顶元素,使栈仍然是递增的
//
result = max(result, height[tmp]*(s.empty() ? i : i - s.top() - 1));
}
}

return result;
}


View Code
注:上述代码有误,应该是height[s.top()]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: