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 q = new PriorityQueue<>();//默认升序
PriorityQueue priorityQueue = new PriorityQueue<>( new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o1-o2; } });//自定义为降序
peek()//返回队首元素

poll()//返回队首元素,队首元素出队列

add()//添加元素

size()//返回队列元素个数

isEmpty()//判断队列是否为空,为空返回true,不空返回false


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部