LCR 160. 数据流中的中位数
文章目录
- 1.题目
- [LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/solutions/477593/zi-jie-ti-ku-jian-41-kun-nan-shu-ju-liu-zhong-de-z/)
- 2.思路
- 3.代码
1.题目
LCR 160. 数据流中的中位数
**中位数 **是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。
例如,
[2,3,4]
的中位数是 3
[2,3]
的中位数是 (2 + 3) / 2 = 2.5
设计一个支持以下两种操作的数据结构:
- `void addNum(int num)` - 从数据流中添加一个整数到数据结构中。- `double findMedian()` - 返回目前所有元素的中位数。
示例 1:
**输入:
**["MedianFinder","addNum","addNum","findMedian","addNum","findMedian"]
[[],[1],[2],[],[3],[]]
**输出:**[null,null,null,1.50000,null,2.00000]
示例 2:
**输入:
**["MedianFinder","addNum","findMedian","addNum","findMedian"]
[[],[2],[],[3],[]]
**输出:**[null,null,2.00000,null,2.50000]
2.思路
addNum
数组是空直接插入,不是空就扩容然后往后移,而 findMedian
方法则根据数组元素数量的奇偶性计算中位数
3.代码
class MedianFinder {
public:// 成员变量 arr,用于存储数据流中的所有数字,使用 std::vector 容器来管理这些数字std::vector<int> arr;// 构造函数,在创建 MedianFinder 对象时调用,这里不做额外初始化操作,因为 arr 初始为空MedianFinder() {}// 向数据流中添加一个新数字的方法void addNum(int num) {// 检查 arr 是否为空if (arr.empty()) {// 如果 arr 为空,直接将新数字添加到 arr 中arr.push_back(num);} else {// 如果 arr 不为空,需要为新数字腾出位置,将 arr 的大小增加 1arr.resize(arr.size() + 1);// 定义一个整数变量 i,用于遍历数组int i;// 从数组倒数第二个元素开始向前遍历// 只要当前元素 arr[i] 大于要插入的数字 num,并且 i 不小于 0for (i = arr.size() - 2; i >= 0 && arr[i] > num; --i) {// 将当前元素向后移动一位,为新数字让出插入位置arr[i + 1] = arr[i];}// 当循环结束时,i + 1 位置就是新数字应该插入的位置arr[i + 1] = num;}}// 计算并返回当前数据流中位数的方法double findMedian() {// 这里注释掉了排序操作,因为在 addNum 方法中已经保证了数组有序// sort(arr.begin(), arr.end());// 检查 arr 中元素的数量是奇数还是偶数if (arr.size() % 2 == 1) {// 如果元素数量是奇数,中位数就是中间位置的元素// 将该元素转换为 double 类型后返回return arr[(arr.size()) / 2] * 1.0;} else {// 如果元素数量是偶数,中位数是中间两个元素的平均值// 先将中间两个元素转换为 double 类型,求和后除以 2 得到平均值并返回return (arr[(arr.size()) / 2] * 1.0 +arr[arr.size() / 2 - 1] * 1.0) /2.0;}}
};/*** 以下是调用示例的注释说明:* 这段注释给出了如何使用 MedianFinder 类的示例* 首先创建一个 MedianFinder 对象指针 obj,使用 new 关键字动态分配内存* 接着调用 obj 的 addNum 方法向数据流中添加一个数字 num* 最后调用 obj 的 findMedian 方法计算并获取当前数据流的中位数,存储在 param_2 中*/
// MedianFinder* obj = new MedianFinder();
// obj->addNum(num);
// double param_2 = obj->findMedian();
相关文章:
LCR 160. 数据流中的中位数
文章目录 1.题目[LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/solutions/477593/zi-jie-ti-ku-jian-41-kun-nan-shu-ju-liu-zhong-de-z/)2.思路3.代码 1.题目 LCR 160. 数据流中的中位数 **中位数 **是有序整数列表中的…...
post、get、delete、put请求
一、配置axios拦截器 // src/utils/request.js import axios from axios;// 创建 axios 实例 const instance axios.create({baseURL: https://api.example.com, // 你的 API 基础 URL//timeout: 10000, // 请求超时时间 });// 请求拦截器 instance.interceptors.request.use…...
css: 针对属性left/right/top/bottom为啥设置transition动画不起作用
如题: 在css的position中 left/right/top/bottom 这类位置属性值如果考虑使用transition来添加动画,transition它会优先考虑left/top属性,而此时transition触发需要的是数值型属性,如果设置为auto则系统会默认不考虑将位置属性添加…...
计算机网络(1)基础篇
目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…...
机器学习所需要的数学知识【01】
总览 导数 行列式 偏导数 概理论 凸优化-梯度下降 kkt条件...
ArcGISPro AA表O_Name字段 内容 复制到BB表BB字段里
import arcpy# 设置工作空间和要处理的表路径 resource_shape_table r"AA表.shp" # 源表路径 resource_assets_table r"BB表.shp" # 目标表路径# 使用 SearchCursor 读取源表中的 O_Name 字段 with arcpy.da.SearchCursor(resource_shape_table, [O_Na…...
2023-arXiv-CoT Prompt 思维链提示提升大型语言模型的推理能力
arXiv | https://arxiv.org/abs/2201.11903 摘要: 我们探讨了如何生成思维链(一系列中间推理步骤)显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明,思维链提示提高了一系列算术、常识和符号推理任务的性…...
机器学习数学基础:21.特征值与特征向量
一、引言 在现代科学与工程的众多领域中,线性代数扮演着举足轻重的角色。其中,特征值、特征向量以及相似对角化的概念和方法,不仅是线性代数理论体系的核心部分,更是解决实际问题的有力工具。无论是在物理学中描述系统的振动模式…...
逻辑分析仪的使用-以STM32C8T6控制SG90舵机为例
STM32C8T6控制SG90舵机 1.逻辑分析仪作用 逻辑分析仪在嵌入式开发中的作用非常重要,它是开发、调试和排错过程中的一个不可或缺的工具。具体来说,逻辑分析仪的作用包括以下几个方面: 1.信号捕获和分析: 逻辑分析仪能够实时捕获多个…...
QCustomplot库运用
最近需要用到这个库显示数据,需要在一个曲线图4个Y轴共用一个X轴,并且做游标,跟随鼠标移动,并且实时反馈数据到表格中。记录一下程序。 customPlot new QCustomPlot(this); customPlot->setBackground(QBrush(QColor(204,204,…...
数据中心网络监控
数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。 对于任何利用IT基础设施的企业来说,数据中心都是运营的核心,它本质上为整个业务网络托管业务应用程序和存储空间。数据中心可以是任…...
定义+类比
定义:间接量表是备选问题或者是备选语句或者是语句中选择合适的语句表达其态度,最后选择是一个合适的语句 A给具体的表打分,是直接上数字,而不是选择合适的语句表达其态度 B给排序,也是通过数字来表达其态度,也不是选择…...
深度学习框架探秘|PyTorch:AI 开发的灵动画笔
前一篇文章我们学习了深度学习框架——TensorFlow(深度学习框架探秘|TensorFlow:AI 世界的万能钥匙)。在人工智能领域,还有一个深度学习框架——PyTorch,以其独特的魅力吸引着众多开发者和研究者。它就像一…...
NAT模式 vs DR模式:LVS 负载均衡技术的优劣与适用场景
1. NAT 模式(Network Address Translation) 工作原理 请求路径:客户端请求发送到虚拟 IP(VIP),负载均衡器(Director)通过 DNAT(目标地址转换)将请求转发到真…...
八大排序——归并排序
目录 1.基本思想 2.动态图 3.分解的时候我们可以使用递归的方式进行 代码解释 1. main 方法 2. mergeSort 方法 3. merge 方法 示例运行过程 初始数组 每轮排序后的数组 代码总结 合并两个有序序列 1.基本思想 归并排序就是递归得将原始数组递归对半分隔,…...
YOLO算法模型检测利用手机IP摄像头
1.yolo算法训练模型 yolov5训练网络数据集_yolo数据集 csdn-CSDN博客 2.模型检测 检测文件参数:yolov5的detect.py中基础参数分析-CSDN博客 3.进行IP摄像头检测 3.1下载IP摄像头 3.2打开与使用IP摄像头(确保手机与电脑在同一WiFi(局域网…...
前端职业规划
前端开发的职业规划可以根据个人兴趣、技术深度和职业目标来制定。以下是一个典型的前端开发者职业发展路径,涵盖了从初级到高级的不同阶段,以及未来的发展方向: 1. 初级阶段(0-2 年) 目标:掌握基础技能&a…...
百度舆情优化:百度下拉框中的负面如何清除?
百度的下拉词、相关搜索、大家还在搜有负面词条,一直是企业公关经理头疼的问题,小马识途营销顾问深耕网络营销领域十几年,对百度SEO优化、百度下拉框、百度相关搜索、自媒体营销、短视频营销等等技巧方面积累了一定的方法和技巧。 对于百度下…...
Java中如何高效地合并多个对象的List数据:方法与案例解析!
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...
【Vue】打包vue3+vite项目发布到github page的完整过程
文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…...
编译和链接【四】链接详解
文章目录 编译和链接【四】链接详解前言系列文章入口符号表和重定位表链接过程分段组装符号决议重定位 编译和链接【四】链接详解 前言 在我大一的时候, 我使用VC6.0对C语言程序进行编译链接和运行 , 然后我接触了VS, Qt creator等众多IDE&…...
C语言进阶——4自定义类型(2)— 位段/枚举/联合体
目录 2. 位段2.1 什么是位段2.2 位段的内存分配2.3 位段的跨平台问题2.4 位段的应用 3. 枚举3.1 枚举类型的定义3.2 枚举的优点3.3 枚举的使用 4. 联合(共用体)4.1 联合类型的定义4.2 联合的特点4.3 联合大小的计算 2. 位段 2.1 什么是位段 位段的声明…...
企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…...
250213-异常exception
1. 概念 异常的抛出(throw):若在方法运行中出现错误,则方法会生成代表该异常的一个对象,并把它交给运行时系统,这个过程叫做抛出。 异常的捕获(catch):运行时系统接收到…...
MySQL - 索引 - 介绍
索引(Index)是帮助数据库高效获取数据的数据结构. 结构 语法 创建索引 creat [unique] index 索引名 on 表名 (字段名, ...); //创建唯一索引时加上unique, 多个字段用逗号隔开 查看索引 show index from 表名; 删除索引 drop index 索引名 on 表名;...
每日一题——90. 子集 II
题目链接:90. 子集 II - 力扣(LeetCode) 代码: class Solution { private:vector<vector<int>> result;vector<int> path;void traversal(vector<int>& nums,int startindex,vector<bool> …...
Mysql进阶篇(mysqlcheck - 表维护程序)
mysqlcheck的作用 mysqlcheck客户端用于执行表维护,可以对表进行:分析、检查、优化或修复操作。 (1)分析的作用是查看表的关键字分布,能够让 sql 生成正确的执行计划(支持 InnoDB,MyISAM&#x…...
ChartDB:一个基于Web的可视化数据库设计工具
这次给大家介绍一个可视化的数据库设计工具:ChartDB。 ChartDB 是一个免费开源的数据库可视化设计工具,支持的数据库包括 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server、SQLite、ClickHouse 等。 对于已有的数据库,ChartDB 提供了一键…...
Java NIO基础与实战:如何提升IO操作性能
Java NIO 概述 Java NIO(新 I/O)是 Java 提供的一个更为高效的 I/O 处理框架。Java NIO(New I/O)是对传统 I/O(java.io)模型的改进,它引入了非阻塞 I/O 操作和面向缓冲区的数据读写方式&#x…...
Elasticsearch:同义词在 RAG 中重要吗?
作者:来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索,以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为,由于…...
Python - Python正则表达式
正则表达式(Regular Expression),又称规则表达式。正则表达式(Regular Expression)是一组由字母和符号组成的特殊文本,用于从文本中找出满足特定格式的句子。正则表达式通常被用来检索、替换那些符合某个模…...
DeepSeek 指导手册(入门到精通)
第⼀章:准备篇(三分钟上手)1.1 三分钟创建你的 AI 伙伴1.2 认识你的 AI 控制台 第二章:基础对话篇(像交朋友⼀样学交流)2.1 有效提问的五个黄金法则2.2 新手必学魔法指令 第三章:效率飞跃篇&…...
Android adb测试常用命令大全
目录 一、查看最上层成activity名字: 二、查看Activity的任务栈: 三、获取安装包信息 四、性能相关 1、显示CPU信息 : 2、查看CPU使用信息 3、内存信息(meminfo package_name or pid 使用程序的包名或者进程id显示内存信息) 4、电量信…...
【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
近年来,人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态,如大型语言模型和深度学习技术的发展,展示了深度学习和机器学习技术的强大潜力,成为推动创新和提升竞争力的关键。特别是PyTorch,凭借其…...
在不知道进程的情况下怎么关闭
在不知道具体进程ID(PID)或者进程可能会变动的情况下,关闭MinIO服务器的方法通常依赖于你如何启动MinIO以及你的操作系统环境。以下是一些建议的步骤: 1. 使用系统服务管理工具 如果你将MinIO配置为系统服务(例如在L…...
算力平台 驱动云的使用
驱动云的使用 1 进入官网注册2 上传数据3 上传模型4 创建项目5 开发环境6 停止使用 1 进入官网注册 点击这个进入 可以看到注册之后送十个算力点 如果不训练,仅仅上传数据和模型,那么也是要收费的,因为存储数据要占用驱动云的空间。 2 上…...
高校LabVIEW开发调试中的常见问题
在高校进行LabVIEW开发调试时,常常面临硬件选型不当、方案设计不合理、布线不专业以及人员流动性强等问题。这些问题可能影响项目的进展和质量。本文将总结这些问题,并给出具体的解决方案,帮助学生和团队更高效地开展开发工作。 1. 硬件选…...
数据结构——结构体位域、typedef类型重定义、宏、共用体union、枚举、虚拟内存划分
一、结构体位域 1.1 结构体位域的基础 结构体位域:把结构体字节大小扣到极致的一个类型,以bit单位 格式:struct 位域体名{数据类型 位域名:位域大小;数据类型 位域名:位域大小;...};解析:位域体名:可有可无ÿ…...
git bash删除库中的分支与文件
一、 在 GitHub 上删除非 main 分支的步骤可以分为两部分:首先在本地删除该分支,然后在 GitHub 上删除远程分支。以下是详细的步骤: 1. 删除远程分支(在 GitHub 上删除) 打开 GitHub 仓库页面,进入你的仓…...
连锁收银系统的核心架构与技术选型
在连锁门店的日常运营里,连锁收银系统扮演着极为重要的角色,它不仅承担着交易结算的基础任务,还关联着库存管理、会员服务、数据分析等多个关键环节。一套设计精良的核心架构与合理的技术选型,是保障收银系统高效、稳定运行的基础…...
称呼计算器:智能科技,简化您的计算生活
一款手机应用程序,安卓设备上使用。这款计算器应用以其简洁的界面、实用的功能和良好的用户体验而受到用户的喜爱。 计算器的主要特点包括: 基本计算功能:支持加、减、乘、除等基本运算。 科学计算器模式:提供更高级的数学运算功…...
qt的QMainWindow保存窗口和恢复窗口状态
保存窗口状态 QSettings settings("MyCompany", "MyApp"); // 指定存储的应用信息 settings.setValue("mainWindowState", saveState());saveState() 返回一个 QByteArray,包含 所有停靠窗口和工具栏的状态。QSettings 用于存储数据…...
【mysql】记一次mysql服务挂了后的数据恢复过程
现象 服务器异常,导致mysql服务异常退出,重启后,校验redo log异常 说明 mysql服务是通过docker-compose启动的,serviceName是db磁盘挂载:/var/lib/mysql挂载到本地磁盘/data/mysql 处理过程 备份 查看磁盘挂载列表 docker …...
使用 LangChain 对接硅基流动(SiliconFlow)API:构建一个智能对话系统
文章目录 什么是硅基流动(SiliconFlow)?LangChain 简介在 LangChain 中对接硅基流动步骤 1:安装必要的库步骤 2:设置 API 密钥步骤 3:编写代码代码解析步骤 4:运行代码如何扩展和改进总结 在现代…...
K8s 证书认知(K8s Certificate Awareness)
K8s 证书认知 在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。 1、证书及链路关系 Kubeadm部署的集群,K8s …...
iperf
iperf 是一个网络性能测试工具,用于测量TCP和UDP的网络带宽。-c 参数表示客户端模式,用于指定要连接的服务器地址。以下是一些常见的 iperf 客户端命令示例: 基本用法 iperf -c <server_ip> <server_ip>:服务器的IP…...
【FastAPI 使用FastAPI和uvicorn来同时运行HTTP和HTTPS的Python应用程序】
在本文中,我们将介绍如何使用 FastAPI和uvicorn来同时运行HTTP和HTTPS的 Python应用程序。 简介 FastAPI是一个高性能的Web框架,可以用于构建快速、可靠的API。它基于Python的类型提示和异步支持,使得开发者可以轻松地编写出安全且高效的代…...
Windows系统安装搭建悟空crm客户管理系统 教程
1、在安装悟空 CRM 之前,需要确保你的 Windows 系统上已经安装了以下软件: Web 服务器:推荐使用 Apache 或 Nginx,这里以 Nginx 为例。你可以使用集成环境套件如 XAMPP 来简化安装过程,它包含了 Nginx 、MySQL、PHP 等…...
使用API有效率地管理Dynadot域名,清除某一文件夹中域名的默认DNS设置
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...
评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法
评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…...