您的位置:首页 > 其它

leetcode 84 Largest Rectangle in Histogram

2016-06-30 21:15 309 查看
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

class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
vector<int> stack;
int len = heights.size();

if(len == 0) return 0;

int index = 0, max_area = 0;

heights.push_back(-1);

while (index <= len) {
if(stack.empty() || heights[index] >= heights[stack.back()]) {
stack.push_back(index);
index++;
} else {
int top = stack.back(), temp = 0;
stack.pop_back();

if(stack.empty()) {
temp = heights[top]*index;
} else {
temp = heights[top]*(index-stack.back()-1);
}
if(max_area < temp) max_area = temp;
}
}

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