题目链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/
题目描述
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。
思路
1 暴力
将i
位置作为左边界,j
遍历i~n
得到(i,j)
这个区间的最小高度,(j-i+1)*minHeight
得到以i
作为左端点,j
作为右端点的最大矩形面积。
复杂度分析
时间复杂度: O ( n 2 ) O(n^2) O(n2)。 需要枚举所有可能的柱子对。
空间复杂度: O ( 1 ) O(1) O(1) 。不需要额外的空间。
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
if