【アルゴリズム問題】データストリームにおける中位数


タイトルの説明
データ・ストリームの中位数を取得するにはどうすればいいですか?データストリームから奇数個の数値を読み出すと、中位数は、すべての数値がソートされた後に中間に位置する数値である.データストリームから偶数個の数値が読み出されると、中位数は、すべての数値が並べ替えられた後の中間の2つの数の平均値となります.Insert()メソッドを用いてデータストリームを読み出し,GetMedian()メソッドを用いて現在の読み出しデータの中位数を取得した.
分析は1つの大きいトップスタック、1つの小さいトップスタックで実現され、その中で大きいトップスタックは小さい要素を保存し、スタックトップはこれらの要素の中の最大値である.小さなスタックは大きな要素を保存し、スタックはこれらの要素の最小値です.2つのスタックのスタックトップはそれぞれデータストリームの中心値を保存し、データストリームの総数が偶数である場合、中位数は大スタックと小スタックトップ要素の平均である.データ・ストリームの合計数が奇数の場合、中位数は大きなスタック・トップ要素です.
コード(AC)
import java.util.Comparator;
import java.util.PriorityQueue;

public class Solution {
    int count = 0;
    PriorityQueue<Integer> minHeap = new PriorityQueue<>();
    PriorityQueue<Integer> maxHeap = new PriorityQueue<>(11 ,new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);
        }
    });

    public void Insert(Integer num) {
        if(count%2==0){
            minHeap.offer(num);
            maxHeap.offer(minHeap.poll());
        }else{
            maxHeap.offer(num);
            minHeap.offer(maxHeap.poll());
        }
        count++;
    }

    public Double GetMedian() {
        if(count %2 ==0) return (double) (minHeap.peek() + maxHeap.peek()) / 2;
        else return (double) maxHeap.peek();
    }


}