我的思路是 先读取所有数据,遍历两个数组,然后创建数组用来存储实际到场的校友的ID,然后根据校友到场人数查询相应数组,遍历数组输出年龄最大的人
但是自己写的时候也意识到暴力很容易超时,但还是没能想出来优化的方法,最终两个测试点超时
代码如下:
import java.io.*;
public class Main{
//找年龄最大的方法
public static String FindOldest(String[] list){
int max=99999999;
String maxID="";
for(String info:list) {
if (info != null) {
int date = Integer.parseInt(info.substring(6, 14));
if (date < max) {
max = date;
maxID = info;
}
}
}
return maxID;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//校友数组
int N=Integer.parseInt(br.readLine());
String[] alumni=new String[N];
for(int i=0;i<N;i++){
alumni[i]=br.readLine();
}
//来宾数组
int M=Integer.parseInt(br.readLine());
String[] guest=new String[M];
for(int i=0;i<M;i++){
guest[i]=br.readLine();
}
//实到校友计数器和数组
int count=0;
String[] alumniGuest=new String[N];
//遍历来宾数组和校友数组 发现同ID存入实到数组
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
if(guest[i].equals(alumni[j])){
count++;
alumniGuest[j]=alumni[j];
break;
}
}
}
//最终输出
String Oldest="";
//题目要求
if(count!=0){
Oldest=FindOldest(alumniGuest);
}
if(count==0){
Oldest=FindOldest(guest);
}
System.out.println(count);
System.out.println(Oldest);
}
}
最终测试点三四超时,请问具体怎么解决?