java刷OJ超时解决过程

刷pat,数据超过1000,最后一个测试点一定会超时,因为Scanner太慢了,要命

1.首先我先试了   system.in改成   BufferedInputStream(System.in));

Scanner input = new Scanner (new BufferedInputStream(System.in));

一点用没有,别试!!!!!

2.我看知乎有人说用抛出的形式,如下

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {

		s = in.readLine();	
			
		} catch (IOException e) {
			e.printStackTrace();
		}

流的形式输入,这是官方解法。可是,因为各种原因我没成功AC过,但我觉得可能是可以的,因为好多人说快了不少。。。

3.如果用2的方法,要考虑readLine()是输入一行,如果要读取数据还要把它们一个个分开,我日

解决办法是用split()(这个是我猜的,不知道工作效率如何),然后用Integer把String转成int,各种类型转换就自己想办法吧

4.但是,还有一个比较坑的地方是,如果用3的方法,如果前面有输入整形数据的话

int n=input.nextInt();
String s=input.nextLine();

上面这样是无法继续输入s的,原因我不知道,解决方法如下

String q = input.nextLine();
int n = Integer.parseInt(q);
String s=input.nextLine();

以上是我最近踩的坑,超过1000个数据,java基本不能拿满分,拜祖师爷也不行,暴力出奇迹就是个童话。java单线程不适合刷竞赛类的题,血的教训。但Leetcode对java的支持非常友好,暴力法能解非常多的题。

选C++了,因为还是java比较顺手,所以决定先用java写思路,然后改成C++。C++真香(doge

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章