美团面试题

凭什么不拼 凭什么不拼 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。
输入描述:
输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)
第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)
输出描述:
输出一个整数,表示最大的矩阵面积。
示例1
输入
6
2 1 5 6 2 3
输出
10


import java.util.Arrays;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int len=sc.nextInt();
int num[]=new int[len];
for (int i = 0; i < num.length; i++) {
num[i]=sc.nextInt();
}
int count= area(num);
System.out.println("面积为:"+count);
}
public static int area(int[]num) {
int max=0;
int min=0;//最短的柱子长度
for (int i = 0; i < num.length; i++) {//以第几个柱子为准
min=num[i];
for (int j = 1; j <=num.length-i; j++) {//连续算几个柱子的面积
//先找到其中最短的柱子
min=Math.min(min, num[i+j-1]);
max=Math.max(max, j*min);//等价于下面
/*if(max<j*min){
max=j*min;
}*/
}
}
return max;
}
}

各位大佬我想问一下为什么此处没通过的原因是答案错误:您提交的程序没有通过所有的测试用例???
我不知道我哪里错了,,,感觉思路貌似没问题。求大佬指点!!!!谢谢
...全文

相关推荐

评论 14
收藏 已收藏
分享
返回顶部
凭什么不拼
非技术区 23,404 成员 70,506 内容