直方图内最大矩形 DP 固定左边(遍历可固定),移动右边(便历移动),调整最大面积

来源:互联网 发布:澳洲网络制式 编辑:程序博客网 时间:2024/05/18 03:55

直方图内最大矩形

有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。

给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。

测试样例:
[2,7,9,4,1],5
返回:14

import java.util.*; public class MaxInnerRec {    public int countArea(int[] A, int n) {        // write code here        int min=Integer.MAX_VALUE;        int maxArea=Integer.MIN_VALUE;        for(int i=0;i<n;i++){            min=Integer.MAX_VALUE;//注意每次把min重新初始化为最大值            for(int j=i;j<n;j++){                min=Math.min(A[j],min);                maxArea=Math.max(maxArea,(j-i+1)*min);            }        }        return maxArea;    }}





0 0