给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000) 第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)
输出一个整数,表示最大的矩阵面积。
6 2 1 5 6 2 3
10
import java.util.Scanner; /** * @Classname ZuiDaJuxingMianJi * @Description TODO * @Date 19-6-1 下午4:05 * @Created by mao<tianmao818@qq.com> */ public class Main { public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (sc.hasNext()){ int n=sc.nextInt(); int[] heights=new int[n]; for(int i=0;i<n;i++){ heights[i]=sc.nextInt(); } int ans=0; for(int i=0;i<n;i++){ //if(i+1<n && heights[i]<heights[i+1]){ // continue; //} int minH=heights[i]; for(int j=i;j>=0;j--){ minH=Math.min(minH,heights[j]); ans=Math.max(ans,minH*(i-j+1)); } } System.out.println(ans); } } }
import java.util.Scanner;