atcoder ABC234 D javaで挑戦中 処理時間に悩まされてます...泣
こんにちは、java初めて2ヶ月!atcoderに若干ハマっているヤスと申します。
質問なのですが....
処理時間短縮する方法ありませんか??
この問題にjavaで挑戦中です....
あともう少しなのに...
最初に書いたコードから調べに調べて処理時間を短縮してこの結果です...
あと、どこを短縮できるのかがわかりません..泣
(ちなみに解説をみても近しいところまではできるのですがjavaでどう書けばよいのか...)
今のソースコードこちら
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] NK = sc.nextLine().split(" ");
int N = Integer.parseInt(NK[0]);
int K = Integer.parseInt(NK[1]);
int numlist[] = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
sc.close();
Queue<Integer> iQlist = new PriorityQueue<Integer>();
for(int i = 0; i < K; i++) {
iQlist.add(numlist[i]);
}
Integer minnum = (Integer) iQlist.peek();
System.out.println(minnum);
for(int j = K; j < N; j++) {
if(minnum < numlist[j]) {
iQlist.add(numlist[j]);
iQlist.remove(iQlist.peek());
minnum = (Integer) iQlist.peek();
}
System.out.println(minnum);
}
}
}
自分で試したこと
・for文を減らす
・リスト減らす
・PriorityQueue使う
・splitが遅い? ← 調査中