题目地址: 链接
使用双堆维护数据流的中位数:大顶堆 + 小顶堆
ts
class MedianFinder {
private maxPQ: MaxPriorityQueue<number>;
private minPQ: MinPriorityQueue<number>;
constructor() {
this.maxPQ = new MaxPriorityQueue();
this.minPQ = new MinPriorityQueue();
}
addNum(num: number): void {
const {maxPQ, minPQ} = this
if(maxPQ.size() !== minPQ.size()) {
minPQ.enqueue(num)
maxPQ.enqueue(minPQ.dequeue())
} else {
maxPQ.enqueue(num)
minPQ.enqueue(maxPQ.dequeue())
}
}
findMedian(): number {
const {maxPQ, minPQ} = this
if(maxPQ.size() !== minPQ.size()) {
return minPQ.front()
} else {
return (minPQ.front() + maxPQ.front()) / 2;
}
}
}
/**
* Your MedianFinder object will be instantiated and called as such:
* var obj = new MedianFinder()
* obj.addNum(num)
* var param_2 = obj.findMedian()
*/