求直方图围成的最大矩形面积
有一个直方图,用一个整数数组表示,其中每列的宽度为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;