您的位置:首页 > 其它

LeetCode OJ 之 Largest Rectangle in Histogram (直方图中的最大矩形)

2015-02-05 10:29 393 查看

题目:

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

给n个非负数代表直方图每个长条的高度,每个长条的宽度是1,找出直方图中最大的矩形。



Above is a histogram where width of each bar is 1, given height = 
[2,1,5,6,2,3]
.



The largest rectangle is shown in the shaded area, which has area = 
10
 unit.

For example,

Given height = 
[2,1,5,6,2,3]
,

return 
10
.

思路:

参考:http://blog.csdn.net/doc_sgl/article/details/11805519 。

代码:

class Solution {
public:
int largestRectangleArea(vector<int> &height)
{
stack<int> stk;
height.push_back(0);
int maxArea = 0;
for(int i = 0 ; i < height.size() ; )
{
if(stk.empty() || height[i] > height[stk.top()])
{
stk.push(i);
i++;
}
else
{
int tmp = stk.top();
stk.pop();
maxArea = max(maxArea , height[tmp] * (stk.empty() ? i : (i - stk.top() - 1)));//Largest Rectangle in Histogram ???
}
}
return maxArea;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: