public class MedianFinder {
Queue<Integer> left = new PriorityQueue<Integer>();
Queue<Integer> right = new PriorityQueue<Integer>();
// Adds a number into the data structure.
public void addNum(int num) {
right.offer(num);
left.offer(-right.poll());
if (left.size() > right.size()) {
right.add(-left.poll());
}
}
// Returns the median of current data stream
public double findMedian() {
if (right.size() > left.size()) {
return (double) right.peek();
} else {
return (double) (right.peek() - left.peek()) / 2;
}
}
};
// Your MedianFinder object will be instantiated and called as such:
// MedianFinder mf = new MedianFinder();
// mf.addNum(1);
// mf.findMedian();