[leetcode-84-Largest Rectangle in Histogram]
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
.
思路:
查看当前值是否是递增状态,围成的矩阵面积可能会继续增加,那么继续向后遍历。
如果发生值减小,向前查看组成的面积大小。
int largestRectangleArea(vector<int>& height) { int res = 0; for (int i = 0; i < height.size(); ++i)
{ if (i + 1 < height.size() && height[i] <= height[i + 1]) continue; int minH = height[i]; for (int j = i; j >= 0; --j)
{ minH = min(minH, height[j]); int area = minH * (i - j + 1); res = max(res, area); } } return res; }
参考: