84. Largest Rectangle in Histogram

xiaoxiao2021-02-28  126

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>& heights) { if (heights.size() == 0)return 0; heights.push_back(-1); stack<int> temp; int index = 0; int res = 0; while (index < heights.size()){ if (temp.empty() || heights[index] >= heights[temp.top()]){ temp.push(index++); } else{ int highindex = temp.top(); temp.pop(); res = max(res, heights[highindex] * (temp.empty() ? index : index - temp.top() - 1)); } } return res; }
转载请注明原文地址: https://www.6miu.com/read-25363.html

最新回复(0)