算法分析
- 1、用
scoreG
存储当前女生最高的成绩,初始是-1
,nameG
存最高成绩的女生的名字,idG
存储的是最高成绩女生的id
- 2、用
scoreB
存储当前男生最高的成绩,初始是101
,nameB
存最低成绩的男生的名字,idB
存储的是最低成绩男生的id
- 3、枚举所有的学生,更新
1
和2
的参数 - 4、若
scoreG == -1
表示没有女生,score == 101
表示没有男生,输出时需要进行判断
时间复杂度 $O(n)$
参考文献
pat
Java 代码
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int scoreG = -1;//女生的最高成绩
String nameG = "###";
String idG = "###";
int scoreB = 101;//男生的最低成绩
String nameB = "###";
String idB = "###";
for(int i = 0;i < n;i ++)
{
String name = scan.next();
String sex = scan.next();
String id = scan.next();
int score = scan.nextInt();
if(sex.equals("F") && score > scoreG)
{
nameG = name;
idG = id;
scoreG = score;
}
if(sex.equals("M") && score < scoreB)
{
nameB = name;
idB = id;
scoreB = score;
}
}
if(scoreG == -1) System.out.println("Absent");
else System.out.println(nameG + " " + idG);
if(scoreB == 101) System.out.println("Absent");
else System.out.println(nameB + " " + idB);
if(scoreG == -1 || scoreB == 101) System.out.println("NA");
else System.out.println(Math.abs(scoreG - scoreB));
}
}