刷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