class MedianFinder {
PriorityQueue<Integer> fq = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
PriorityQueue<Integer> sq = new PriorityQueue<>();
public MedianFinder() {
}
public void addNum(int num) {
if (fq.size() <= sq.size()) {
sq.add(num);
fq.add(sq.poll());
} else {
fq.add(num);
sq.add(fq.poll());
}
}
public double findMedian() {
if (fq.size() == sq.size()) {
return (fq.peek() + sq.peek()) / 2.0;
} else {
return fq.peek();
}
}
}