LeetCode 4 寻找两个正序数组的中位数 - 二分 LeetCode 4 寻找两个正序数组的中位数hard 题但思路不复杂——转化为找第 k 小的数每次二分砍掉一半。 寻找两个正序数组的中位数两个正序数组找它们合并后的中位数。要求 O(log(mn))。[1,3], [2] → 2.0推导链两个有序数组找中位数 → 合并再取中间是 O(mn)不符合。中位数本质是第 k 小的数。每次从两数组各取 k/2 个比较末尾小的那一半不可能包含第 k 小的数它们加起来都不够 k 个可整段丢弃。每次砍一半。别想着真把两个数组合并——那是 O(mn)不符合要求。中位数 第 k 小的数k 总长度一半。每次从两个数组各取 k/2 个元素比较末尾小的那一半整体丢掉。每次砍一半log 级别。publicdoublefindMedianSortedArrays(int[]nums1,int[]nums2){inttotalnums1.lengthnums2.length;if(total%21){returnfindKth(nums1,0,nums2,0,total/21);}else{intleftfindKth(nums1,0,nums2,0,total/2);intrightfindKth(nums1,0,nums2,0,total/21);return(leftright)/2.0;}}privateintfindKth(int[]a,inti,int[]b,intj,intk){if(ia.length)returnb[jk-1];// a 用完了if(jb.length)returna[ik-1];// b 用完了if(k1)returnMath.min(a[i],b[j]);// 只剩一个了inthalfKk/2;intaValihalfK-1a.length?a[ihalfK-1]:Integer.MAX_VALUE;intbValjhalfK-1b.length?b[jhalfK-1]:Integer.MAX_VALUE;if(aValbVal)returnfindKth(a,ihalfK,b,j,k-halfK);// 丢掉 a 的前 halfK 个elsereturnfindKth(a,i,b,jhalfK,k-halfK);// 丢掉 b 的前 halfK 个}时间 O(log(mn))。数组越界处理取 a[i k/2 -1] 之前必须判断是否越界越界说明这个数组不够长给它塞一个 MAX_VALUE 让它永远比输自然砍另一个数组。k1 的边界剩最后一个要选的时候直接 min(a[i], b[j])不需要再比 k/2。取 a[ik/2-1] 前必须判越界——不够长时用 MAX_VALUE 占位在比较中自动输掉。k1 时直接 min(a[i], b[j])。这道题你踩过什么坑或者你用别的语言实现过吗评论区聊聊回头复习也方便翻。

相关新闻

最新新闻

2025终极指南:如何免费获取网盘真实下载链接?LinkSwift网盘直链助手深度解析

2025终极指南:如何免费获取网盘真实下载链接?LinkSwift网盘直链助手深度解析

2025终极指南:如何免费获取网盘真实下载链接?LinkSwift网盘直链助手深度解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 …

2026/8/11 12:55:37
Apache PLC4X架构设计:工业物联网设备统一接入的最佳实践方案

Apache PLC4X架构设计:工业物联网设备统一接入的最佳实践方案

Apache PLC4X架构设计:工业物联网设备统一接入的最佳实践方案 【免费下载链接】plc4x PLC4X The Industrial IoT adapter 项目地址: https://gitcode.com/gh_mirrors/pl/plc4x Apache PLC4X作为工业物联网领域的关键基础设施,通过统一抽象层设计&…

2026/8/11 12:55:37
ComfyUI完全指南:掌握AI图像生成的终极节点化工作流

ComfyUI完全指南:掌握AI图像生成的终极节点化工作流

ComfyUI完全指南:掌握AI图像生成的终极节点化工作流 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI ComfyUI作为…

2026/8/11 12:55:37
FanControl深度解析:打造Windows系统智能散热管理方案

FanControl深度解析:打造Windows系统智能散热管理方案

FanControl深度解析:打造Windows系统智能散热管理方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…

2026/8/11 12:55:37
Git分支管理与冲突解决实战指南

Git分支管理与冲突解决实战指南

1. Git分支同步与冲突解决的核心价值 在团队协作开发中,Git分支管理是每个开发者必须掌握的生存技能。我经历过无数次凌晨三点还在解决合并冲突的噩梦,也见证过因为错误的分支操作导致整个团队代码回退一周的惨剧。分支同步和冲突解决不是选修课&#xf…

2026/8/11 12:55:36
PyCharm远程SSH开发配置与优化指南

PyCharm远程SSH开发配置与优化指南

1. 为什么需要远程SSH开发?作为一名长期使用PyCharm进行Python开发的工程师,我深刻体会到本地开发环境的局限性。当项目依赖特定服务器环境(如GPU集群、特定Linux库版本)或需要团队协作时,远程开发成为刚需。PyCharm P…

2026/8/11 12:50:36