Largest Rectangle in Histogram (直方图中最大面积) 【leetcode】
2013-09-20 21:36
549 查看
题目:
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.
Above is a histogram where width of each bar is 1, given height =
The largest rectangle is shown in the shaded area, which has area =
For example,
Given height =
return
题意找出最大面积的长方形。
之前做过类似的题,有O(n)复杂度的做法,用栈维护一个递增的序列,栈中存对应高度的位置。
每遍历一个元素,判断是否是栈中最大的元素,如果不是,把栈顶的元素弹出,并计算以栈顶元素为最大值高度时的长方形面积。
面积的长度为栈顶元素之前的一个元素到当前遍历的元素的之间的长度,边界情况特殊考虑。
题解目录
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.
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 =
10unit.
For example,
Given height =
[2,1,5,6,2,3],
return
10.
题意找出最大面积的长方形。
之前做过类似的题,有O(n)复杂度的做法,用栈维护一个递增的序列,栈中存对应高度的位置。
每遍历一个元素,判断是否是栈中最大的元素,如果不是,把栈顶的元素弹出,并计算以栈顶元素为最大值高度时的长方形面积。
面积的长度为栈顶元素之前的一个元素到当前遍历的元素的之间的长度,边界情况特殊考虑。
class Solution { public: int largestRectangleArea(vector<int> &height) { stack<int>s; int len=height.size(),maxx=0; for(int i=0;i<len;++i) { if(s.empty())s.push(i); else { while(!s.empty()&&height[s.top()]>height[i]) { int ph=s.top(); s.pop(); if(!s.empty()) maxx=max(maxx,(i-s.top()-1)*height[ph]); else maxx=max(maxx,i*height[ph]); } s.push(i); } } while(!s.empty()) { int ph=s.top(); s.pop(); if(!s.empty()) maxx=max(maxx,(len-s.top()-1)*height[ph]); else maxx=max(maxx,len*height[ph]); } return maxx; } };
题解目录
相关文章推荐
- LeetCode_直方图最大面积(Largest Rectangle in Histogram)
- [LeetCode]—Largest Rectangle in Histogram 求直方图最大填充矩形面积
- LeetCode: Largest Rectangle in Histogram(直方图最大面积)
- LeetCode | Largest Rectangle in Histogram(直方图围城的最大矩形面积)
- LeetCode: Largest Rectangle in Histogram(直方图最大面积)
- [Leetcode] largest rectangle in histogram 直方图中最大的矩形
- [C++]LeetCode: 133 Largest Rectangle in Histogram(最大矩形面积)
- ACM-直方图最大面积-Largest Rectangle in Histogram
- 柱状图内最大的矩形面积 Largest Rectangle in Histogram @LeetCode
- [LeetCode] Largest Rectangle in Histogram 直方图中最大的矩形
- LeetCode-Largest Rectangle in Histogram-直方图上的最大矩形-基于栈的滑动最值
- 解题报告:LeetCode Largest Rectangle in Histogram(计算最大矩形面积)
- 4.1.3LeetCode: Largest Rectangle in Histogram(直方图最大面积)
- [Leetcode] largest rectangle in histogram 直方图中最大的矩形
- 【直方图的最大面积】Largest Rectangle in Histogram
- Poj 2559 Largest Rectangle in a Histogram(柱形统计图中的最大矩形面积)
- Hdu 1506 Largest Rectangle in a Histogram (DP求最大长方形面积)
- POJ 2559 Largest Rectangle in a Histogram(单调栈维护最大矩形面积)
- Largest Rectangle in a Histogram(最大矩形面积,动态规划思想)
- 84 Largest Rectangle in Histogram(直方图中最大的矩形)