当前位置: 首页 > news >正文

LeetCode HOT100 - 寻找两个正序数组的中位数

首先,复杂度要求是 O(log (m+n)) 想到使用二分或者分治之类的解决办法

再考虑题目,找中位数就是去找两个有序数组中的第 k 小元素

只有一个数组的时候是简单的,问题就是在于现在给我们两个数组,且不能先行合并再去做操作

因此不妨从两个数组各自的中位数出发,看看能不能有什么启发

不妨设为数组 a 和 b,a 的中位数是 x , b 的中位数是 y

若 x <= y ,那我们考虑下能得到什么信息

因为要找的是加起来第 (n + m) / 2 个元素,所以 x 之前的元素肯定不是,y 可能是,但是还要取决于 x 之后的元素情况

但接着呢

如果我们接着是去考虑 a 数组中 > x 且 < y 的元素,和 b 中这样的元素,视图找到一个平衡点恰好使得数量关系实际上就回到了遍历的思路中

我们回想下我们是要二分,二分的核心是每次能排除掉一部分不可能的元素,并进入一个类似结构的子问题,可以用同样的逻辑去处理

这样再和我们前面的形式比对,发现已经有些初步二分的样子了

因为这次比较后,我们排除了一部分元素的可能性(a 数组的前面部分的元素)和剩下的子问题(在两个数组剩下的元素中继续找)

只是进入子问题后我们不能继续找第 (n + m) / 2 个元素了,因为哪些元素相当于被删除了,所以要根据我们删除的元素进行调整

顺着这个思路,我们做些整理和规范化

比如我们之前想的是比较 a 数组中位数和 b 数组中位数,但是进一步做的话这个流程会不容易继续,因为我们要找的是合并数组的第 k 小,而不是两个数组自身的中位数,这个过程中两个数组长度可能不同,而且随着元素不断被排除,目标 k 也在变化,所以每一步的比较点应该跟当前的 k 绑定,而不是固定找各自数组的中位数

所以考虑下面的形式

在两个数组当前还没被排除的部分中,找第 k 小

令 i 指向 nums1 当前起点,j 指向 nums2 当前起点

每次考虑 half = k / 2,去比较 nums1 从 i 开始的第 half 个元素 和 nums2 从 j 开始的第 half 个元素
当然,如果某个数组剩余长度不足 half,就取它的最后一个元素

如果 A[k/2] <= B[k/2],那么 A 的前 k/2 个数都不可能是第 k 小,

http://www.jsqmd.com/news/711415/

相关文章:

  • ANI3DHUMAN:3D人体动画技术的自引导随机采样解析
  • 职场利器!OpenClaw 汉化版极简安装上手指南
  • 企业宣传短片,如何选对制作公司让品牌价值翻倍?
  • Windows AirPlay 2接收器终极方案:免费实现iOS设备投屏到Windows电脑
  • 2026年轻钢龙骨怎么选 实用干货帮你挑正规靠谱品牌
  • 5步掌握雀魂AI智能辅助工具:提升麻将水平的终极指南
  • YOLOv13涨点改进| WACV 2026 | 独家创新首发、Conv卷积改进篇 |引入SimConv相似卷积模块,实现自适应感受野调整,克服传统卷积固定卷积局限,助力小目标检测、图像分割等高效涨点
  • 基于非线性模型预测控制NMPC+QP求解器(qpOASES和qpDUNES)+ACADO工具包车辆自主导航、车道跟踪与避障控制(Matlab代码实现)
  • 《初学C语言》第三讲:printf函数和scanf函数
  • 2026年q2道路花箱选型技术推荐:不锈钢花箱,不锈钢镀锌板花箱,人行横道花箱,园林花箱,排行一览! - 优质品牌商家
  • 从Jupyter Notebook一键转生产沙箱:3步实现AI代码自动容器化+依赖锁定+网络策略注入(2026 Docker Desktop 4.32新功能深度拆解)
  • Trae入门
  • 软考高级系统架构设计师备考(二十三):软件工程—逆向工程、正向工程与需求工程
  • 2026浏览器TLS指纹与JA3/JA4协议指纹技术深度解析及实现方案
  • 人力资源咨询公司,人力资源改革,国企改革咨询,成都咨询公司,成都管理咨询公司,绩效咨询公司,优选指南! - 优质品牌商家
  • StitchFlow:基于AI的本地化UI生成工具,打通产品简报到可交付代码
  • 告别‘抓瞎’!用CAPL的RS232函数自动抓取MCU Log保姆级教程
  • 72W碳化硅SIC电源方案(24V3A,12V6A)LP8841SC+LP35118N全电压,过认证,六级能效( BOM,典型电路)
  • 机器学习参数与超参数:核心区别与调优实践
  • 3步快速解锁碧蓝航线全皮肤:Perseus补丁终极指南
  • 大语言模型在文档伪造检测中的创新应用与实践
  • G-Helper实战指南:华硕笔记本开源硬件控制与性能调优
  • 全国省市区 JSON数据
  • 拜读了顶会顶刊上这些论文,原来多模态特征融合是这么玩的
  • 大语言模型强化学习训练:BAPO算法解析与实践
  • 基于大模型的AI外呼系统:RAG与知识增强实践(三)
  • 终极电路设计神器:Draw.io电子工程绘图库完全指南
  • 告别轮询!用STM32F103的TIM+DMA搞定DHT11,实测代码不到100行
  • 从零开始:5分钟掌握暗黑3按键助手D3KeyHelper的完整配置方法
  • 2026AI驱动的动态指纹生成与风控对抗技术深度实践