[Leetcode] Largest Rectangle in Histogram (Java)
2014-01-16 11:57
316 查看
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
找出最大长方形面积
用栈维护一个高度递增序列,栈中存放高度对应的位置,遍历height数组:
1)若此位置高度值大于栈顶元素,则入栈;
2)不大于栈顶元素,则从栈中弹出元素并计算最大面积max
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.
找出最大长方形面积
用栈维护一个高度递增序列,栈中存放高度对应的位置,遍历height数组:
1)若此位置高度值大于栈顶元素,则入栈;
2)不大于栈顶元素,则从栈中弹出元素并计算最大面积max
public class Solution { public int largestRectangleArea(int[] height) { int max = 0; Stack<Integer> stack = new Stack<Integer>(); for(int i=0;i<height.length;i++){ if(stack.isEmpty()) stack.add(i); else { if(height[stack.peek()]<height[i]) stack.add(i); else { while(!stack.isEmpty()&&height[stack.peek()]>height[i]){ int h = stack.pop(); if(stack.isEmpty()){ max = Math.max(max, i*height[h]); }else { max = Math.max(max, (i-stack.peek()-1)*height[h]); } } stack.add(i); } } } while(!stack.isEmpty()){ int h = stack.pop(); if(stack.isEmpty()){ max = Math.max(max, height.length*height[h]); }else { max = Math.max(max, (height.length-stack.peek()-1)*height[h]); } } return max; } }
相关文章推荐
- (java)leetcode-84:Largest Rectangle in Histogram
- [LeetCode][Java] Largest Rectangle in Histogram
- Largest Rectangle in Histogram leetcode java
- Largest Rectangle in Histogram leetcode java
- LeetCode 84 (Largest Rectangle in Histogram)java
- Java for LeetCode 084 Largest Rectangle in Histogram【HARD】
- LeetCode 笔记系列 17 Largest Rectangle in Histogram
- LeetCode: Largest Rectangle in Histogram
- Largest Rectangle in Histogram -- leetcode
- [LeetCode] Largest Rectangle in Histogram 解题思路
- leetcode之Largest Rectangle in Histogram
- LEETCODE: Largest Rectangle in Histogram
- (难点)[LeetCode]Largest Rectangle in Histogram
- LeetCode(84) Largest Rectangle in Histogram
- Leetcode: Largest Rectangle in Histogram
- leetcode_题解_Largest Rectangle in Histogram
- LeetCode--largest-rectangle-in-histogram
- leetcode 179:Largest Rectangle in Histogram 两种算法
- Largest Rectangle in Histogram [leetcode]
- Leetcode Largest Rectangle in Histogram