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.
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
heights.push_back(-1);
int max_size = 0;
int index = 0;
stack<int> s;
while(index<heights.size()){
if(s.size()==0 || heights[s.top()] <= heights[index]){ //比栈顶大就入栈
s.push(index);
index++;
}else{ //否则出栈,一直到栈顶小于当前遍历到的元素
int top = s.top();
s.pop();
int size = 0;
if(s.size()==0){
size = heights[top]*index;
}else{
size = heights[top]*(index-s.top()-1);
}
if(size>max_size) max_size = size; //判断最大值
}
}
return max_size;
}
};
84. Largest Rectangle in Histogram
最新推荐文章于 2022-03-15 18:41:53 发布