leetcode[84]Largest Rectangle in Histogram
2015-02-09 14:02
405 查看
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
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.
class Solution { public: /* int Max(int a, int b){return a > b ? a : b;} int largestRectangleArea(vector<int> &height) { height.push_back(0); stack<int> stk; int i = 0; int maxArea = 0; while(i < height.size()){ if(stk.empty() || height[stk.top()] <= height[i]){ stk.push(i++); }else { int t = stk.top(); stk.pop(); maxArea = Max(maxArea, height[t] * (stk.empty() ? i : i - t)); } } return maxArea; } int largestRectangleArea(vector<int> &height) { if(height.empty())return 0; height.push_back(0); int maxRes=0; stack<int> sta; for (int i=0;i<height.size();i++) { if (sta.empty()||(!sta.empty()&&height[i]>=height[sta.top()])) { sta.push(i); } else { int top; int newRes; while(!sta.empty()&&height[i]<height[sta.top()]) { top=sta.top(); sta.pop(); newRes=(sta.empty()?i:(i-sta.top()-1))*height[top]; maxRes=maxRes>newRes?maxRes:newRes; } sta.push(i); } } return maxRes; } */ int largestRectangleArea(vector<int> &height) { if(height.empty())return 0; height.push_back(0); int maxRes=0; stack<int> sta; for (int i=0;i<height.size();i++) { int top; int newRes; while(!sta.empty()&&height[i]<height[sta.top()]) { top=sta.top(); sta.pop(); newRes=(sta.empty()?i:(i-sta.top()-1))*height[top]; maxRes=maxRes>newRes?maxRes:newRes; } sta.push(i); } return maxRes; } };
相关文章推荐
- LeetCode84——Largest Rectangle in Histogram
- 【LeetCode】[84] Largest Rectangle in Histogram
- LeetCode 84 Largest Rectangle in Histogram
- leetcode hard专杀之84. Largest Rectangle in Histogram
- leetcode 84: Largest Rectangle in Histogram
- leetcode 84 Largest Rectangle in Histogram
- LeetCode 84 (Largest Rectangle in Histogram)java
- [LeetCode 84, 85]Largest Rectangle in Histogram / Maximal Rectangle
- leetcode_question_84 Largest Rectangle in Histogram
- leetcode 84 :Largest Rectangle in Histogram
- LeetCode 84 Largest Rectangle in Histogram
- LeetcodeLargest -84- Rectangle in Histogram 94.01%
- leetcode 84 Largest Rectangle in Histogram
- Leetcode_84 Largest Rectangle in Histogram
- 【leetcode】Array——Largest Rectangle in Histogram(84)
- LeetCode(84) Largest Rectangle in Histogram
- LeetCode---(84)Largest Rectangle in Histogram
- LeetCode-84-Largest Rectangle in Histogram 经典题目,单调栈
- (java)leetcode-84:Largest Rectangle in Histogram
- leetcode 84 Largest Rectangle in Histogram (单调栈)