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;
}
本文介绍了一种算法,用于计算给定直方图中最大矩形的面积,直方图的每个柱子宽度为1,高度由整数数组表示。通过使用栈来跟踪每个柱子的位置,算法能够高效地找到最大矩形。
7729

被折叠的 条评论
为什么被折叠?



