295.Find Median from Data Stream
1
class MedianFinder {
Queue<Integer> small = new PriorityQueue<>((a, b)->(b - a));
Queue<Integer> large = new PriorityQueue<>();
/** initialize your data structure here. */
public MedianFinder() {
}
public void addNum(int num) {
large.add(num);
small.add(large.poll());
if(large.size() < small.size())
large.add(small.poll());
}
public double findMedian() {
if(large.size() > small.size())
return large.peek();
else
return (large.peek() + small.peek()) / 2.0;
}
}
/**
* Your MedianFinder object will be instantiated and called as such:
* MedianFinder obj = new MedianFinder();
* obj.addNum(num);
* double param_2 = obj.findMedian();
*/