295 Find Median from Data Stream
1. Question
addNum(1)
addNum(2)
findMedian() -> 1.5
addNum(3)
findMedian() -> 22. Implementation
3. Time & Space Complexity
Last updated
addNum(1)
addNum(2)
findMedian() -> 1.5
addNum(3)
findMedian() -> 2Last updated
class MedianFinder {
private PriorityQueue<Integer> minHeap;
private PriorityQueue<Integer> maxHeap;
/** initialize your data structure here. */
public MedianFinder() {
minHeap = new PriorityQueue<>();
maxHeap = new PriorityQueue<>(Collections.reverseOrder());
}
public void addNum(int num) {
maxHeap.add(num);
minHeap.add(maxHeap.remove());
if (maxHeap.size() < minHeap.size()) {
maxHeap.add(minHeap.remove());
}
}
public double findMedian() {
return minHeap.size() == maxHeap.size() ? 0.5 * (minHeap.peek() + maxHeap.peek()) : maxHeap.peek();
}
}
/**
* Your MedianFinder object will be instantiated and called as such:
* MedianFinder obj = new MedianFinder();
* obj.addNum(num);
* double param_2 = obj.findMedian();
*/