刷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