方法:分别得到小每个柱子的高度为高的最大面积,然后选取最大的那个。在分析过程中不必考虑单个柱子在整个柱形图里的最大面积,因为这个最大面积如果 不是以它为高的矩形,那必然是以其它柱子高度为高的矩形,所以只需要求出以每个柱子为最高的矩形面积,再比较即可。
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
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|