Largest Rectangle in Histogram
Total Accepted: 61747
Total Submissions: 252559
Difficulty: Hard
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 = 10
unit.
For example,
Given heights = [2,1,5,6,2,3]
,
return 10
.
Subscribe to see which companies asked this question
Hide Similar Problems
思路:
详细分析,可参考:http://blog.csdn.net/doc_sgl/article/details/11805519
java code:
public class Solution {
public int largestRectangleArea(int[] heights) {
Stack<Integer> index = new Stack<Integer>();
int len = heights.length;
int maxArea = 0;
int i = 0;
while(i <= len) {
int h = (i==len) ? 0 : heights[i];
if(index.isEmpty() || h >= heights[index.peek()])
index.push(i++);
else {
int tmp = index.pop();
int wid = index.empty() ? i : i-index.peek()-1;
maxArea = Math.max(maxArea, heights[tmp] * wid);
}
}
return maxArea;
}
}