largest-rectangle-in-histogram

/**
* 給出n個數字,表明直方圖的條高,直方圖每一條的寬度爲1,請計算直方圖中最大矩形的面積
*
* 上圖是每條寬度爲1, 高度 =[2,1,5,6,2,3].的直方圖
*
* 圖中的陰影部分是該直方圖中面積最大的矩形,面積爲10個單位
* 例如:
* 給出的高度 =[2,1,5,6,2,3],
* 返回10.
*/

/**
 * 給出n個數字,表明直方圖的條高,直方圖每一條的寬度爲1,請計算直方圖中最大矩形的面積
 *
 * 上圖是每條寬度爲1, 高度 =[2,1,5,6,2,3].的直方圖
 *
 * 圖中的陰影部分是該直方圖中面積最大的矩形,面積爲10個單位
 * 例如:
 * 給出的高度 =[2,1,5,6,2,3],
 * 返回10.
 */

public class Main59 {

    public static void main(String[] args) {
        int[] height = {0,9};
        System.out.println(Main59.largestRectangleArea(height));
    }

    public static int largestRectangleArea(int[] height) {

        if (height.length <= 0) {
            return 0;
        }
        int maxArea = 0;

        for (int i=0;i<height.length;i++) {
            int minLen = height[i];
//            maxArea = height[i]*1;
            for (int j=i;j<height.length;j++) {
                int area = 0;
                if (minLen > height[j]) {
                    area = height[j] * (j-i+1);
                    minLen = height[j];
                }else{
                    area = minLen* (j-i+1);
                }
                if (area > maxArea) {
                    maxArea = area;
                }
            }
        }
        return maxArea;
    }
}
本站公眾號
   歡迎關注本站公眾號,獲取更多信息