92 数据流中的中位数

news2024/12/22 22:15:59

数据流中的中位数

    • 题解1 小根堆+大根堆
      • 另一种写法

中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。

例如 arr = [2,3,4] 的中位数是 3 。
例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5 。
实现 MedianFinder 类:

MedianFinder() 初始化 MedianFinder 对象。

void addNum(int num) 将数据流中的整数 num 添加到数据结构中。

double findMedian() 返回到目前为止所有元素的中位数。与实际答案相差 10-5 以内的答案将被接受。

示例 1:
输入

["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]
[[], [1], [2], [], [3], []]

输出

[null, null, null, 1.5, null, 2.0]

解释

MedianFinder medianFinder = new MedianFinder();
medianFinder.addNum(1);    // arr = [1]
medianFinder.addNum(2);    // arr = [1, 2]
medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2)
medianFinder.addNum(3);    // arr[1, 2, 3]
medianFinder.findMedian(); // return 2.0

提示:

  • − 1 0 5 -10^5 105 <= num <= 1 0 5 10^5 105
  • 在调用 findMedian 之前,数据结构中至少有一个元素\
  • 最多 5 ∗ 1 0 4 5 * 10^4 5104 次调用 addNumfindMedian

题解1 小根堆+大根堆

class MedianFinder {
    // 优先队列默认小顶堆, 返回large(维持后面)(用top)
    priority_queue<int> large;  
    // 大顶堆, 返回small(维持前面)(用top)(注意定义)
    priority_queue<int, vector<int>, greater<int>> small;
public:
    MedianFinder() {
    }
    // 重点
    void addNum(int num) {
        if(small.size() >= large.size()){
            small.push(num);
            large.push(small.top());
            small.pop();
        }else{
            large.push(num);
            small.push(large.top());
            large.pop();
        }
    }
    
    double findMedian() {
        if(large.size() < small.size()){
            return small.top();
        }else if(large.size() > small.size()){
            return large.top();
        }
        return (large.top() + small.top()) / 2.0;
    }
};

/**
 * Your MedianFinder object will be instantiated and called as such:
 * MedianFinder* obj = new MedianFinder();
 * obj->addNum(num);
 * double param_2 = obj->findMedian();
 */

在这里插入图片描述

另一种写法

class MedianFinder {
public:
    priority_queue<int, vector<int>, less<int>> queMin;
    priority_queue<int, vector<int>, greater<int>> queMax;

    MedianFinder() {}

    void addNum(int num) {
        if (queMin.empty() || num <= queMin.top()) {
            queMin.push(num);
            if (queMax.size() + 1 < queMin.size()) {
                queMax.push(queMin.top());
                queMin.pop();
            }
        } else {
            queMax.push(num);
            if (queMax.size() > queMin.size()) {
                queMin.push(queMax.top());
                queMax.pop();
            }
        }
    }

    double findMedian() {
        if (queMin.size() > queMax.size()) {
            return queMin.top();
        }
        return (queMin.top() + queMax.top()) / 2.0;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1162270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Java与Jsoup库构建有趣的爬虫项目

目录 一、网络爬虫的概念和应用 二、Jsoup库的功能和优势 三、使用Java与Jsoup库编写网络爬虫 四、网络爬虫的法律和道德问题 五、注意事项 六、总结 本文将深入探讨如何使用Java与Jsoup库构建一个实际且有趣的网络爬虫项目。我们将首先简要介绍网络爬虫的概念和应用&…

运动耳机哪个好?跑步耳机哪个好?运动耳机排行榜推荐

​运动时没有音乐的相伴真的很枯燥&#xff0c;当你打开音乐&#xff0c;世界就只剩下你和你的运动。运动的同时听歌还能让你完全沉浸在音乐中&#xff0c;享受运动的乐趣。无论是在激烈的比赛中&#xff0c;还是在轻松的晨跑中&#xff0c;它都能为你提供最佳的听觉体验。然而…

银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64mkdir -p /home/zenglg cd /home/zenglg git clone --depth 1 https://gitee.com/xia-chu…

【23-24 秋学期】NNDL 作业6 卷积

卷积常用于特征提取 实验过程中注意认真体会“特征提取”&#xff0c;弄清楚为什么卷积能够提取特征。 一、概念 用自己的语言描述“卷积、卷积核、特征图、特征选择、步长、填充、感受野”。 二、探究不同卷积核的作用 卷积神经网络工作原理的直观理解_superdont的博客-CS…

DCN无线网络解决方案

一、概述 网络环境建设项目的目标是要建设一套安全可靠、性能领先的无线网络系统&#xff0c;能够良好支撑协同工作平台。经过几年的建设&#xff0c;网络建设已经由大规模建设阶段逐步转入“建设与服务并重&#xff0c;着力深化应用”的新阶段。在此阶段&#xff0c;网络工作…

基于Apache SeaTunnel 的数据精确一致性技术实践

引言 在分布式系统中&#xff0c;保障数据一致性是至关重要的任务之一。数据一致性是指分布式系统中的各个节点在进行数据更新时能够保持数据的准确性和完整性。然而&#xff0c;由于网络延迟、节点故障等原因&#xff0c;分布式系统中的数据一致性问题变得复杂而具有挑战性。…

行业揭秘:腾讯共享wifi码推广零加盟费是真的吗?

近年来&#xff0c;“共享经济”概念在商业领域取得了巨大成功。共享WiFi贴码成为共享经济的一种典型案例&#xff0c;被越来越多的人看作是一种低风险、高回报的投资方式。而在这个市场中&#xff0c;腾讯WiFi码推广以“零加盟费”而备受关注。本文将探讨腾讯WiFi码推广零加盟…

中国商界杂志中国商界杂志社中国商界编辑部2023年第10期目录查询

要闻 我国旅游市场步入理性繁荣阶段 赵熠如; 10-11 产业 老国货品牌再迎高光时刻 能否留住流量 涂瀚文; 12-13《中国商界》投稿&#xff1a;cnqikantg126.com 金融集聚有力 促进长三角城市高质量发展 刘盛坤; 14-17 辽宁农贸市场亟待优化升级路径在哪儿&#x…

SpringMVC Day 11 : 零 xml 配置

前言 欢迎来到《Spring MVC Day 11: 零XML配置》&#xff01;在之前的学习中&#xff0c;我们已经掌握了如何使用Spring MVC框架构建灵活、高效的Web应用程序。然而&#xff0c;我们可能还记得那些繁琐的XML配置文件&#xff0c;它们是我们在过去几天中使用的方式。 好消息是…

数据库概念和sql语句+库表管理操作+数据库用户管理

一、数据库的概念&#xff1a; 进入数据库的奇妙世界&#xff1a;mysql -u root -p123456 数据库是一个系统&#xff0c;是一个人机系统。由硬件、OS操作系统、数据库、DBMS和数据库的 用户共同组成。 用户时通过DBMS&#xff08;各种数据库的软件&#xff09;来对数据库进行…

京东数据平台:2023年9月京东智能家居行业数据分析

鲸参谋监测的京东平台9月份智能家居市场销售数据已出炉&#xff01; 9月份&#xff0c;智能家居市场销售额有小幅上涨。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年9月&#xff0c;京东平台智能家居的销量为37万&#xff0c;销售额将近8300万&#xff0c;同比增…

I.MX6U设置I2C复用和电气特性函数IOMUXC_SetPinMux和IOMUXC_SetPinConfig解析

1. 在【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 第627页中有提到bsp_ap3216c.c中IO初始化&#xff0c;配置 I2C IO属性函数如下&#xff1a; unsigned char ap3216c_init(void) { IOMUXC_SetPinMux(IOMUXC_UART4_TX_DATA_I2C1_SCL, 1); IOMUXC_SetPinMux(IOMUXC_UART4_…

找工作时如何快速了解一家公司?看他们招聘就知道

每一位求职者&#xff0c;都希望自己能够对感兴趣或者符合自己期望条件的公司有一个全面而深入的了解。如何在找工作或者找实习的时候&#xff0c;快速地了解一家公司&#xff0c;那就看看他们的招聘吧&#xff01; 1、从招聘信息洞察公司格局 有些公司的招聘信息中&#xf…

java 网上点餐系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上点餐系统是一套完善的web设计系统&#xff0c;对理解JSP java SERLVET mvc编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#…

2行代码将你的本地服务暴露在公网!

内网穿透 作为一个开发者&#xff0c;内网穿透的概念你一定听过。 内网穿透&#xff08;Intranet Penetration&#xff09;是指借助一定的技术手段&#xff0c;将处于私有网络&#xff08;内网&#xff09;中的主机或服务器暴露给外部网络&#xff08;公网&#xff09;用户&a…

【好玩的开源项目】Docker下部署HomeAssistant智能家居系统

【好玩的开源项目】Docker下部署HomeAssistant智能家居系统 一、HomeAssistant介绍1.1 HomeAssistant简介1.2 HomeAssistant特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、…

分享一下怎么做小程序营销活动

小程序营销活动已经成为现代营销的必备利器&#xff0c;它能够帮助企业提高品牌知名度、促进产品销售&#xff0c;以及加强与用户的互动。然而&#xff0c;要想成功地策划和执行一个小程序营销活动&#xff0c;需要精心设计和全面规划。本文将为您介绍小程序营销活动的策划和执…

谷歌浏览器中input输入框默认填充时的背景色设置

问题如下&#xff1a; 解决办法如下&#xff08;通过css3&#xff09;&#xff1a; input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active {-webkit-transition-delay: 111111s;-webkit-transition: color 11111s…

iOS报错命名空间“std”中的“unary_function”

刚刚将我的 Xcode 升级到 15.0&#xff0c;突然它开始在 RCT_Folly 中出现以下错误 No template named unary_function in namespace std; did you mean __unary_function?我尝试删除缓存数据和派生数据并清理构建。也尝试删除 pod 和 node_modules。但没有任何帮助。 于是我…

回文日期题解

【问题描述】 2020年春节期间&#xff0c;有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按“yyyymmdd”的格式写成一个8位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。 有人表示20200202是“千年一遇”的特殊日子。对此小明很不认同&am…