A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

方法:分别得到小每个柱子的高度为高的最大面积,然后选取最大的那个。在分析过程中不必考虑单个柱子在整个柱形图里的最大面积,因为这个最大面积如果 不是以它为高的矩形,那必然是以其它柱子高度为高的矩形,所以只需要求出以每个柱子为最高的矩形面积,再比较即可。

import java.util.Scanner;

public class Main {

    public static void fun(int[] lens) {
        if (lens == null || lens.length == 0) {
            return;
        }
        int MAX_AREA = 0;
        for (int i = 0; i < lens.length; i++) {
            int maxArea = maxArea(i, lens);
            if(maxArea>MAX_AREA){
                MAX_AREA = maxArea;
            }
        }
        System.out.println(MAX_AREA);
    }

    public static int maxArea(int index, int[] lens) {
        int left = index;
        int right = index;
        int maxArea = 0;
        for (int i = index-1; i >= 0; i--) {
            if (lens[index] > lens) {
                break;
            }
            left--;
        }
        for (int j = index+1; j < lens.length; j++) {
            if (lens[index] > lens[j]) {
                break;
            }
            right++;
        }
        maxArea = (right - left + 1) * lens[index];
        return maxArea;

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            int n = input.nextInt();
            int[] test = new int[n];
            for(int i=0; i<n; i++){
                test = input.nextInt();
            }
            fun(test);
        }

    }

}


---------------------
作者:另一个我竟然存在
来源:CSDN
原文:https://blog.csdn.net/qq_24034545/article/details/82527639
版权声明:本文为博主原创文章,转载请附上博文链接!

2 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马