Largest Rectangle in Histogram

来源:互联网 发布:大数据属于工业么 编辑:程序博客网 时间:2024/05/16 04:45

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.

#include<iostream>#include<vector>#include<stack>#include<algorithm>using namespace std;int largestRectangleArea(vector<int> &height) {stack<int>IndexStack;height.push_back(0);int maxarea = 0;for (int i = 0; i != height.size();){if (IndexStack.empty() || height[i] >= height[IndexStack.top()])IndexStack.push(i++);else{int t = IndexStack.top();IndexStack.pop();maxarea = max(maxarea, height[t] * (IndexStack.empty() ? i : i - IndexStack.top() - 1));}}return maxarea;}


 

0 0
原创粉丝点击