题目
解释
给你M行数据,每一行数据分别包括ID、进入房间时间、离开房间时间,让你输出第一个进入房间的ID和最后一个离开房间的ID
解题思路
题目不难,我的思路是分别将进入房间时间和离开房间时间进行升序排序,第一个进入时间就是排序后的第一个数据的进入时间,最后离开时间就是排序后最后一个离开时间。
首先需要注意的是next()和nextLine()的区别,next()遇到空格就结束;nextLine()读到换行符结束,所以这里我优先使用nextLine()。还有就是nextInt()后面跟着一个空的 nextLine()
,以消耗掉那个换行符
比较大小我用了自定义comparator方法,排序了两次,分别按照进入和离开升序。因为字符串比较大小是根据字典序来的,所以我用compareTo方法。
代码
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
sc.nextLine(); // 消耗掉nextInt()之后的换行符
String[][] arr=new String[m][3];
for (int i = 0; i < m; i++) {
String string=sc.nextLine();
arr[i]=string.split(" ");
}
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[1].compareTo(o2[1]);
}
});
System.out.print(arr[0][0]+" ");
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[2].compareTo(o2[2]);
}
});
System.out.print(arr[arr.length-1][0]);
}
}