题目描述[原题链接][https://leetcode-cn.com/problems/largest-rectangle-in-histogram/]
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]
。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10
个单位。
示例:
1 | 输入: [2,1,5,6,2,3] |
算法描述
首先向栈中插入一个-1
作为最小的下标,然后遍历数组,如果插入值比栈顶值大继续插入编号,如果heights[sta.top()]>=heights[i]
则要更新最大长度,即mx = max(mx,height[i]*(sta.top()-i-1))
更新最大值,将数组数据压入结束后,再用相同的公式把栈弹空即可,返回最后的最大值;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |