您的位置:首页 > 其它

Leetcode-Largest Rectangle in Histogram

2014-12-16 07:50 274 查看
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 height =
[2,1,5,6,2,3]
,

return
10
.

Have you met this question in a real interview?

Solution:

public class Solution {
public int largestRectangleArea(int[] height) {
if (height.length==0) return 0;

Stack<Integer> index = new Stack<Integer>();
index.push(-1);
int max = 0;
for (int i=0;i<height.length;i++){
while (index.peek()!=-1){
if (height[index.peek()]>height[i]){
int cur = index.pop();
max = Math.max(max,height[cur]*(i-index.peek()-1));
} else break;
}
index.push(i);
}

while (index.peek()!=-1){
int cur = index.pop();
max = Math.max(max,height[cur]*(height.length-index.peek()-1));
}

return max;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: