求直方图围成的最大矩形面积
有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。
给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。
比如上面的数组{2,1,5,6,2,3},其最大矩形面积如下所示
可以看出其面积为10。
public static int max_Area(int[] height, int n) {
int res = 0;
for (int i = 0; i < n; i ++)
{
int iwidth = 1;
// 向后寻找
for (int back = i - 1; back >= 0; back --)
{
if (height[i] > height[back])
break;
else
iwidth ++;
}
// 向前寻找
for (int front = i + 1; front < n; front++)
{
if (height[i] > height[front])
break;
else
iwidth ++;
}
// 计算面积
int currentArea = height[i]*iwidth;
if (res < currentArea)
res = currentArea;
}
return res;