【LeetCode热题100(100/100)】数据流的中位数

题目地址: 链接

使用双堆维护数据流的中位数:大顶堆 + 小顶堆

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()
 */
相关推荐
努力中的编程者几秒前
二叉树(C语言底层实现)
c语言·开发语言·数据结构·c++·算法
重庆小透明5 分钟前
【搞定面试之mysql】第三篇 mysql的锁
java·后端·mysql·面试·职场和发展
鹤旗14 分钟前
While语句,do-while语句,for语句
java·jvm·算法
qq_4160187216 分钟前
高性能密码学库
开发语言·c++·算法
NAGNIP18 分钟前
一文搞懂卷积神经网络经典架构-LeNet
算法·面试
宵时待雨27 分钟前
C++笔记归纳14:AVL树
开发语言·数据结构·c++·笔记·算法
NAGNIP33 分钟前
一文搞懂深度学习中的池化!
算法·面试
山川行44 分钟前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code
yangSimaticTech1 小时前
整型数据的转换与比较并不简单
算法