leetcode——295. 数据流的中位数

本文介绍了两种不同的算法实现中位数查找:一种是通过插入排序和lower_bound函数找到元素插入位置;另一种是利用两个优先队列,保持小元素堆和大元素堆的平衡,以快速获取中位数。这两种方法都有效解决了动态数据集中的中位数计算问题。

思路1

  1. 使用插入排序,每次加入元素插入到指定位置
  2. 使用lower_bound()找到元素需要插入的位置

代码1

class MedianFinder {
    vector<int> store;
public:
    void addNum(int num)
    {
        if (store.empty())
            store.push_back(num);
        else
            //lower_bound()返回第一个比num大的值的迭代器
            store.insert(lower_bound(store.begin(), store.end(), num), num);
    }
    double findMedian()
    {
        int n = store.size();
        if(n%2)
            return store[n / 2];
        else
            return (store[n / 2 - 1] + store[n / 2]) * 0.5;
    }
};

思路2

  1. 使用两个优先队列实现中位数在栈顶
    小元素(小堆)逆序排序 大元素(大堆)顺序排序
  2. 如何实现两个优先队列的平衡?
    往小堆加,小堆挑大元素放入大堆,大堆size()小了挑小元素往小堆加

代码2

class MedianFinder {
    priority_queue<int> small;                              
    priority_queue<int, vector<int>, greater<int>> big;  
public:

    void addNum(int num){
        small.push(num);                                   
        big.push(small.top());                             
        small.pop();
        if (small.size() < big.size()) {                 
            small.push(big.top());
            big.pop();
        }
    }

    double findMedian(){
        return lo.size() > hi.size() ? (double) lo.top() : (lo.top() + hi.top()) * 0.5;
    }
};
源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值