算法通关村第14关【黄金】| 数据流的中位数

思路:使用一个小根堆+一个大根堆来找中位数

小根堆保存较大的一半数字,大根堆保存较小的一半数字

奇数queMin的队头即为中位数,偶数queMin和queMax队头相加/2为中位数

初始状态: queMin: [] queMax: []

  1. 添加数字 1: queMin: [1] queMax: [] 中位数1

  2. 添加数字 2: queMin: [2] queMax: [1] 中位数1.5

  3. 添加数字 3: queMin: [2, 3] queMax: [1] 中位数2

  4. 添加数字 4: queMin: [3, 4] queMax: [2, 1] 中位数 2.5

  5. 添加数字 5: queMin: [3, 4, 5] queMax: [2, 1] 中位数3

  6. 添加数字 3.5: queMin: [3, 4, 5] queMax: [3.5, 1, 2] 中位数 3.25

class MedianFinder {PriorityQueue<Integer> queMin = new PriorityQueue<>();PriorityQueue<Integer> queMax = new PriorityQueue<>((a,b)->b-a);public MedianFinder() {}public void addNum(int num) {if(queMin.isEmpty()||num>queMin.peek()){queMin.add(num);if(queMin.size()-queMax.size()>1){queMax.add(queMin.poll());}}else{queMax.add(num);if (queMax.size() > queMin.size()) {queMin.offer(queMax.poll());}}}public double findMedian() {if(queMin.size()>queMax.size()){return queMin.peek();}else{return (queMin.peek()+queMax.peek())/2.0;}}
}/*** Your MedianFinder object will be instantiated and called as such:* MedianFinder obj = new MedianFinder();* obj.addNum(num);* double param_2 = obj.findMedian();*/

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

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

相关文章

java面试题基础第七天

一、java面试题第七天 1.throw和throws的区别&#xff1f; throw&#xff1a; 用于抛出一个异常对象throws&#xff1a;写在方法体上面&#xff0c;将方法体里面的异常&#xff0c;抛给上层 2. 通过故事讲清楚NIO 下面通过一个例子来讲解下。 假设某银行只有10个职员。该银…

stm32学习-芯片系列/选型

【03】STM32HAL库开发-初识STM32 | STM概念、芯片分类、命名规则、选型 | STM32原理图设计、看数据手册、最小系统的组成 、STM32IO分配_小浪宝宝的博客-CSDN博客  STM32&#xff1a;ST是意法半导体&#xff0c;M是MCU/MPU&#xff0c;32是32位。  ST累计推出了&#xff1a…

buuctf web [极客大挑战 2019]LoveSQL

又是这样的界面&#xff0c;这糟糕的熟悉感&#xff0c;依旧使用上题套路 用户名&#xff1a; admin or 11# 密码&#xff1a; 1 有一串很像flag的字符&#xff0c;但是很可惜&#xff0c;这不是flag 看了一眼源代码&#xff0c;没有可以跳转的页面 要换个思路了&#xff0c…

(二十九)大数据实战——kafka集群节点服役与退役案例实战

前言 本节内容是关于kafka集群节点的服役与退役&#xff0c;从而实现kafka集群的缩容与扩容。在开始本节内容之前&#xff0c;我们要预先安装好kafka集群&#xff0c;并准备一台空余的服务器用来完成我们扩容与缩容的案例。关于kafka集群的安装内容这里不在赘述&#xff0c;相…

Python Web 开发常见的100个问题.pdf

Python被广泛认为是一种容易学习和上手的编程语言&#xff0c;因此对于初学者和有经验的开发者都非常友好。这一特点使得Python成为了许多开发者入门Web开发的首选语言。 在Python Web开发中&#xff0c;开发者们通常会遇到各种各样的问题和挑战。现在我们为大家准备了学习路线…

PostgreSQL快速入门 与MySQL语法比较

开篇 本文可帮助具有MySQL基础的小伙伴对PostgreSQL做一个快速的入门&#xff0c;通过语法之间的差异对比&#xff0c;降低学习成本&#xff0c;同样都是数据库&#xff0c;正所谓触类旁通。 模式的概念 模式&#xff08;Schema&#xff09;表示数据库中的逻辑容器&#xff…

HTML 知识扫盲

写在前面 HTML 是一门超文本标记语言&#xff0c;不管你听没听说过 HTML&#xff0c;但在网上冲浪的途中你无时不刻都在与它接触&#xff0c;他遍布在每个你看得到的互联网的角落。其实对于笔者而言&#xff0c;我已经断断续续地学习过这门语言&#xff0c;经过时间的磋磨&…

docker学习1-基本概念

Docker jar包环境镜像&#xff0c;镜像存在docker仓库中&#xff0c;随用随取&#xff0c;无需现配环境 docker通过隔离机制&#xff0c;各个镜像之间互不干扰 docker比vm轻量化&#xff0c;每次只需运行镜像即可&#xff0c;镜像占内存小启动快&#xff0c;虚拟机启动慢&…

typeof的作用

typeof 是 JavaScript 中的一种运算符&#xff0c;用于获取给定值的数据类型。 它的作用是返回一个字符串&#xff0c;表示目标值的数据类型。通过使用 typeof 运算符&#xff0c;我们可以在运行时确定一个值的类型&#xff0c;从而进行相应的处理或逻辑判断。 常见的数据类型…

Java————List

一 、顺序表和链表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c; 常见的线性表&#xff1a;顺序表、链表、栈、队列… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直…

ABeam Team Building |「TDC Green Day——夏日Go Green·畅享山海间 环保公益行动」回顾

夏日Go Green畅享山海间 GO!ABeam 夏日Go Green畅享山海间 夏末初秋时节&#xff0c;大连办公室的员工们来到了海滨的望渔山&逃之夭夭海滩&#xff0c;开启了主题为「夏日Go Green畅享山海间」的Team Building之旅。 本次的活动契合了大连办公室作为绿色办公&#xff08;…

Android Jetpack Compose之状态持久化与恢复

目录 1.概述2.实例解析4. Compose提供的MapSaver和ListSaver4.1 mapServer4.2 ListSaver 1.概述 在之前的文章中&#xff0c;我们提到了remember&#xff0c;我们都知道remember可以缓存创建状态&#xff0c;避免因为重组而丢失。使用remember缓存的状态虽然可以跨越重组&…

打造生产级Llama大模型服务

对于任何想要尝试人工智能或本地LLM&#xff0c;又不想因为意外的云账单或 API 费用而感到震惊的人&#xff0c;我可以告诉你我自己的旅程是如何的&#xff0c;以及如何开始使用廉价的消费级硬件执行Llama2 推理 。 这个项目一直在以非常活跃的速度发展&#xff0c;这使得它非…

Call短路触发版本SIP对讲求助终端

SV-2701VP Call短路触发版本SIP对讲求助终端 一、描述 SV-2701VP是我司的一款壁挂式求助对讲终端&#xff0c;具有10/100M以太网接口&#xff0c;支持G.711与G.722音频解码&#xff0c;其接收SIP网络的音频数据&#xff0c;实时解码播放。配置一路线路输入&#xff0c;一路线…

《动手学深度学习 Pytorch版》 7.1 深度卷积神经网络(LeNet)

7.1.1 学习表征 深度卷积神经网络的突破出现在2012年。突破可归因于以下两个关键因素&#xff1a; 缺少的成分&#xff1a;数据 数据集紧缺的情况在 2010 年前后兴起的大数据浪潮中得到改善。ImageNet 挑战赛中&#xff0c;ImageNet数据集由斯坦福大学教授李飞飞小组的研究人…

MyBatis 分页插件 PageHelper

文章目录 前言PageHelper 应用实现原理剖析应用场景分析 前言 分页插件PageHelper是我们使用Mybatis到的比较多的插件应用&#xff0c;适用于任何复杂的单表、多表分页查询操作。本文介绍PageHelper的使用及原理。 PageHelper 应用 添加依赖 <dependency><groupId…

解决jupyter找不到虚拟环境的问题

解决jupyter找不到虚拟环境的问题 使用jupyter只能使用base环境&#xff0c;不能找到自己创建的虚拟环境。如下图&#xff0c;显示的默认的虚拟环境base的地址。 如何解决这个问题&#xff1f;需要两个步骤即可 1 . 在base环境中安装nb_conda_kernels这个库 activate base c…

【蓝桥杯选拔赛真题62】Scratch判断小球 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch判断小球 一、题目要求 编程实现 二、案例分析 1、角色分析

浙大mpa项目提前批面试如果拿不到A资格怎么办?

2024年浙江大学MPA项目提前批面试申请已经结束&#xff0c;至今来看总的申请人数跟去年2023届基本相当&#xff0c;超过四百名学员报名提面&#xff0c;按照去年1923人报考的体量来看&#xff0c;大多数人恐怕还是把录取的希望保留到常规批复试中。那么&#xff0c;400提面考生…

LInux echo-tail-重定向符命令

①echo命令——输出指定内容 反引号&#xff08;飘号&#xff09; 重定向符 覆盖写入 追加写入 将目录写入txt.txt文件中 ②tail命令——查看文件尾部内容 这是txt.txt文件内容 默认查看尾部十行内容 查看倒数5行的内容 -f会持续追踪&#xff0c;只要有变化就动态显示