【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()
 */
相关推荐
战族狼魂1 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一2 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH2 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
香辣牛肉饭3 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
.徐十三.4 小时前
一篇文章看到最短路径——Dijkstra算法
算法
科学实验家5 小时前
二叉树的几道题
算法
abcy0712136 小时前
flink state实例
大数据·算法·flink
qizayaoshuap6 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
良木林6 小时前
滑动窗口 - LeetCode hot 100
javascript·算法·leetcode·双指针·滑动窗口