算法 数据流的中位数-(大顶堆小顶堆+冒泡排序)

牛客网: BM48

题目: 得到数据流的中位数

思路:

(1) 冒泡排序: 每次插入元素时,进行冒泡排序,将当前值与前一值比较,当前值较小时与前一元素交换,直至不小于前一元素时结束。

(2) 大小顶堆: 设置两个堆min为大顶堆(最大值在堆顶,元素取反即可),max为小顶堆(最小值为堆顶),所有元素先入堆min, 再从min中取最大元素入堆max,如果min数量小于max,从max中取堆顶入堆min; min元素数量多于max时,取出min堆顶元素为中位数,否则两个堆顶元素求均值。

代码:

(1) 冒泡排序思想

// gopackage mainvar nums = []int{}func Insert(num int){nums = append(nums, num)right := len(nums) - 1 for right > 0 {if nums[right] < nums[right-1] {nums[right], nums[right-1] = nums[right-1], nums[right]right--} else {break}}
}func GetMedian() float64{if len(nums) % 2 == 1 {return float64(nums[len(nums)/2])} else {return float64(nums[len(nums)/2] + nums[len(nums)/2-1])/2}
}

(2) 堆排序思想

// py# -*- coding:utf-8 -*-
import heapq
class Solution:def __init__(self) -> None:# 小顶堆self.max = []# 大顶堆self.min = []def Insert(self, num):# write code here// 取反每次栈顶为实际最大值heapq.heappush(self.min, -1 * num)// 实际最大值入堆heapq.heappush(self.max, -1 * self.min[0])// 出堆heapq.heappop(self.min)if len(self.min) < len(self.max):heapq.heappush(self.min, -1 * self.max[0])heapq.heappop(self.max)def GetMedian(self):# write code hereif len(self.min) > len(self.max):return -1.0 * self.min[0]else:return (-1 * self.min[0] + self.max[0])*1.0/2

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

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

相关文章

WPS文件找回怎么做?文件恢复,4个方法!

“我平时习惯了用wps来记录一些工作心得或重点&#xff0c;不知道什么原因&#xff0c;有些很重要的文件莫名不见了&#xff0c;有什么方法可以帮我找回wps文件吗&#xff1f;” wps作一个常用的办公软件&#xff0c;有效的提高了我们的工作效率。在日常使用wps时&#xff0c;可…

非常详细的git-flow分支管理流程配置及使用

非常详细的git-flow分支管理流程配置及使用。 git-flow有两个涵义,一个是指软件开发领域的版本管理流程Gitflow。另一个是指git命令工具git flow。 目前业界主流的版本管理流程是Gitflow 和 trunk-based。 Gitflow流行的比较早。但是目前的流行度要低于 trunk-based模式工作…

RocketMQ 相关文档

官方文档&#xff1a;为什么选择RocketMQ | RocketMQ (apache.org) Rocketmq 5.x架构介绍文章&#xff1a;终于&#xff01;RocketMQ发布5.0版本&#xff1a;架构大重构&#xff0c;代码变更比例高达60%-腾讯云开发者社区-腾讯云 (tencent.com)

爬虫中出现OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

如果出现了 OSError: [WinError 193] %1 不是有效的 Win32 应用程序。那可能是你的Chromedriver版本和Chrome版本不一致。 我是花钱买的&#xff0c;这里免费分享给大家Chrome116版本对应的ChromeDriver 资源发布了&#xff0c;如果有需要私信我要吧

debian安装qq及更新

文章目录 一、安装二、卸载QQ三、更新 一、安装 1.下载Linux QQ安装包 wget https://dldir1.qq.com/qqfile/qq/QQNT/c6032ac7/linuxqq_3.1.0-9332_amd64.deb2.安装软件包 apt install ./linuxqq_3.1.0-9332_amd64.deb3.终端启动QQ qq二、卸载QQ apt remove linuxqq三、更新…

qt功能自己创作

按钮按下三秒禁用 void MainWindow::on_pushButton_5_clicked(){// 锁定界面setWidgetsEnabled(ui->centralwidget, false);// 创建一个定时器&#xff0c;等待3秒后解锁界面QTimer::singleShot(3000, this, []() {setWidgetsEnabled(ui->centralwidget, true);;//ui-&g…

MySQL8.0版安装教程 + Workbench可视化配置教程(史上最细、一步一图解)

文章目录 一、安装MySQL1、选择版本&#xff0c;点击“Download”进行下载2、双击下载好的安装包&#xff0c;点击运行3、选择安装类型为“Custom”4、依次进行选择&#xff0c;选到MySQL Servers 8.0.33 -X64&#xff0c;点击向右的箭头5、选中MySQL Servers 8.0.33 -X64&…

Mysql004:用户管理

前言&#xff1a;本章节讲解的是mysql中的用户管理&#xff0c;包括&#xff08;管理数据用户&#xff09;、&#xff08;控制数据库的访问权限&#xff09;。 目录 1. 查询用户 2. 创建用户 3. 修改用户密码 4. 删除用户 5. 权限控制 1. 查询用户 在mysql数据库中&#xff0…

【通信误码】python实现-附ChatGPT解析

1.题目 通信误码 时间限制: 1s 空间限制: 32MB 限定语言: 不限 题目描述: 信号传播过程中会出现一些误码,不同的数字表示不同的误码ID, 取值范围为1~65535,用一个数组“记录误码出现的情况。 每个误码出现的次数代表误码频度, 请找出记录中包含频度最高误码的最小子数组长度…

OpenCV自学笔记二十二:绘图及交互

一、绘图基础 下面是关于OpenCV绘图基础函数的说明和举例&#xff1a; 1. cv2.line()&#xff1a;绘制直线 cv2.line(img, pt1, pt2, color, thickness, lineType) - img: 需要绘制直线的图像。 - pt1: 直线起始点坐标。 - pt2: 直线结束点坐标。 - color: 直线颜色&…

Java客户端_zkclient库操作Zookeeper

使用zookeeper遇到问题&#xff1a; 重复注册watchersession失效重连异常处理&#xff08;删除节点不能有子节点&#xff0c;新增节点必须有父节点等&#xff09; zkclient是Github上一个开源的Zookeeper客户端&#xff0c;在Zookeeper原生 API接口之上进行了包装&#xff0c;是…

古代有没有电子元器件?

手机&#xff0c;电脑&#xff0c;电视等等电子产品&#xff0c;无时无刻充斥在我们的生活中&#xff0c;如果有一天突然没有了这些功能多样的电子产品&#xff0c;估计大部分人都会一时之间难以适应。 这就好比正在上网&#xff0c;结果突然被人断了网&#xff0c;导致无网络连…

【学习笔记】[AGC064C] Erase and Divide Game

有点难&#x1f605;&#xff0c;看到比自己低一级的选手场切这道题就更绷不住了&#x1f607; 考虑 从低到高位 建立 trie \text{trie} trie 树&#xff0c;但是因为是对反串建立的&#xff0c;所以编号连续的点在 trie \text{trie} trie 树上的位置是分散的&#x1f605; …

基于vue3 + ant-design 自定义SVG图标iconfont的解决方案;ant-design加载本地iconfont.js不显示图标问题

基于vue3 ant-design 自定义SVG图标iconfont的解决方案&#xff1b; ant-design加载本地iconfont.js不显示图标问题 一、准备工作 1、首先去阿里巴巴矢量图标库自定义添加自己的图标&#xff1b;网站地址https://www.iconfont.cn/ 整个步骤是&#xff1a;选择图标–添加到项…

变压器(电抗器) 红外测温作业指导书

1 范围 本标准化作业指导书规定了变压器(电抗器)红外测温(一般检测)工作的准备工作、测温流程图、 现场操作方法、测温周期和标准、测温记录管理等要求。 本标准化作业指导书适用于指导变压器(电抗器)红外测温的一般性检测工作。 2 规范性引用文件 下列文件对于本文件的应用…

第2章 Java集合

2.1 谈谈你对Java集合的理解 难度:★★★ 重点:★★★★ 白话解析 集合类的概念还是比较重要的,不仅面试经常问,实际开发中也离不开。如果能把这道题真正理解了,集合可以说基本上没问题了。 集合就用来用存数据的,它提供了对数据增删改查和统计大小等方法。在Java中集合…

积木报表 JimuReport v1.6.2-GA5版本发布—高危SQL漏洞安全加固版本

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

Linux复习-安装与熟悉环境(一)

这里写目录标题 虚拟机ubuntu系统配置镜像Linux命令vi编辑器3个模式光标命令vi模式切换命令vi拷贝与粘贴命令vi保存和退出命令vi的查找命令vi替换命令 末行模式复制、粘贴、剪切gcc编译器 虚拟机 VMware16 官网下载&#xff1a;vmware官网 网盘下载&#xff1a; 链接&#xff…

Pytorch 深度学习实践 day01(背景)

准备 线性代数&#xff0c;概率论与数理统计&#xff0c;Python理解随机变量和分布之间的关系 人类智能和人工智能 人类智能分为推理和预测 推理&#xff1a;通过外界信息的输入&#xff0c;来进行的推测 预测&#xff1a;例如&#xff0c;看到一个真实世界的实体&#xff…

idea更改java项目名

做了一个普通的java项目&#xff08;使用socket进行网络通信的练手项目&#xff09;&#xff0c;需要更改项目名&#xff0c;更改过程记录在这里。 修改项目名可能会出现很多错误&#xff0c;建议先备份当前项目 1.在idea里&#xff0c;右键项目名——》选择Refactor——》选择…