[BaekJoon]1927最小ヒップ(java)


🔗 質問リンク


https://www.acmicpc.net/problem/1927

👨🏻‍💻 作成されたコード

import java.io.*;
import java.util.PriorityQueue;

public class Main {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n = Integer.parseInt(br.readLine());
		
		PriorityQueue<Integer> heap = new PriorityQueue<>();

		
		for (int i=0; i<n; i++) {
			int x = Integer.parseInt(br.readLine());
			
			if (x != 0) {
				heap.offer(x);
			}
			else {
				if (heap.peek()!=null) {
					bw.write(heap.poll()+"\n");
				}
				else {
					bw.write(0+"\n");
				}
			}
		}
		bw.flush();
		bw.close();
	}
}

📝 整理する


JAvaが提供するライブラリPriorityQueueは通常最小ヒップと同じであるため,この問題はPriorityQueueを用いて簡単な解答を行った.
他の人の上位に位置するパフォーマンスの良いコードから、すべての人が直接heap構造を実現していることがわかります.
このように,PriorityQueue自体はメモリや時間などの性能面で直接実現するコードよりも優れていない.