柱状图中的最大矩形

问题陈述

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

如图,最大矩形面积为10。

问题解决

1、暴力法

设置两个指针,第一个指针i从第一个柱形到最后一个柱形,第二个指针j从i开始遍历到尾,实现穷举,每一轮找出一个最大面积。

2、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution{
public int getMaxArea(int[] heights){
int Area=0;
for(int i=0;i<heights.length;i++){
int h=Integer.MAX_VALUE;
for(int j=i;j<heights.length;j++){
h=Math.min(h,height[j]);
Area=Math.max(Area,(j-i+1)*h);
}
}
return Area;
}
}