PAT考试小技巧与注意点(Java)--持续更新...
2023.6.10考试,本人考乙级,故来备注一下
1.顺序表O(1)按位查找特性来解决超时问题
需要快速寻找id(如学生id),但时间超时,用map可以解决问题,但是后面需要转换为list或数组来排序,可以考虑建立一个数组下标为id的数组,通过顺序表O(1)按位查找特性来解决超时问题。当然需要注意id必须得限制范围!!!
如本题2022年春季考试,可以建立一个大小为100000且类型为学生类型的数组,数组下标为学生的id。

2.解决整数保留长度或保留浮点数保留小数问题(一般保留两位)
double testDouble_01 = 123.456;
float testFloat_01 = 123.456f;
System.out.println("浮点数保留两位小数");
System.out.println(String.format("%.2f", testDouble_01));
System.out.println(String.format("%.2f", testFloat_01));
int a = 101;
System.out.println("整数保留6位长度,高位不够补0");
System.out.println(String.format("%06d", a));
运行结果:
浮点数保留两位小数
123.46
123.46
整数保留6位长度,高位不够补0
000101
3.题目喜欢最大值相同时按要求输出最大值的顺序
如2022年夏季考试

常见解决办法(这里参考了别人的c++代码)

排序时注意不要打乱原本输入的顺序,输出时拿到最大值,如果sum等于最大值就输出(其实这里一般第一个必定能够输出,从第二个元素开始遍历看需不需要输出也行)。
4.Java中Scanner类容易超时问题
做真题模拟题时已经留意到,如果输入过多,对Java要求的时间限制时充裕了很多的,不知道真正考试时候会不会这样,如果不会只能BufferedReader类了,每次读入一行,可谓超级麻烦。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String []s=br.readLine().split(" ");
5.线上考试一开始是手机小程序扫准考证上的二维码!!!
6.PriorityQueue类可以轻松解决大根堆和小根堆问题
如下题
PAT乙级2022春季考试 7-5 前K大数_十有久诚的博客-CSDN博客
Queue
PriorityQueue
peek()//返回队首元素
poll()//返回队首元素,队首元素出队列
add()//添加元素
size()//返回队列元素个数
isEmpty()//判断队列是否为空,为空返回true,不空返回false
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
