二分查找在中位数与两有序数组中的极限应用(LeetCode 4 题推导)

发布时间:2026/11/7 16:29:31

二分查找在中位数与两有序数组中的极限应用(LeetCode 4 题推导) 二分查找在中位数与两有序数组中的极限应用LeetCode 4 题推导在 LeetCode 算法题库中第 4 题“寻找两个正序数组的中位数Median of Two Sorted Arrays”被公认为二分查找领域的“封神之题”。题目要求在严格的 $O(\log(\min(m, n)))$ 时间复杂度内求出中位数。很多同学虽然能写出双指针合并数组的 $O(m n)$ 解法但在面试官限定“必须对数级时间复杂度且不能开辟额外空间”的硬性要求下往往在多层划分和边界指针的交叉验证上彻底迷失。今天我们用几何切分模型与虚拟边界法把这道题的二分推导逻辑彻底理顺。问题转化从“找中位数”到“寻找第 K 小元素”与“数组完美划分”设两个升序数组分别为 $A$长度 $m$和 $B$长度 $n$。假设 $m \le n$若不满足交换 $A$ 和 $B$ 即可保证对较短数组进行二分。求中位数本质上是在数组 $A$ 和 $B$ 中各切一刀数组 $A$ 在下标 $i$ 处切开分成左半部分 $A[0 \dots i-1]$ 和右半部分 $A[i \dots m-1]$数组 $B$ 在下标 $j$ 处切开分成左半部分 $B[0 \dots j-1]$ 和右半部分 $B[j \dots n-1]$。我们将 $A$ 的左半部分和 $B$ 的左半部分合并为“总左半区”将 $A$ 的右半部分和 $B$ 的右半部分合并为“总右半区”。中位数的充要条件只有两个元素数量平衡总左半区的元素数量等于总右半区当 $mn$ 为偶数时或者比右半区多 1当 $mn$ 为奇数时。$$\text{左半区长度 } i j \frac{m n 1}{2} \implies j \frac{m n 1}{2} - i$$这意味着只要 $i$ 确定了$j$ 就会被严格唯一确定数值交叉有序总左半区的最大值必须 $\le$ 总右半区的最小值。由于 $A$ 和 $B$ 自身已经有序$A[i-1] \le A[i]$ 且 $B[j-1] \le B[j]$我们只需要保证交叉条件成立$$A[i-1] \le B[j] \quad \text{且} \quad B[j-1] \le A[i]$$graph TD A[在较短数组 A 的 [0, m] 区间二分划分点 i] -- B[由数学公式直接算出 j (mn1)/2 - i] B -- C{A[i-1] B[j] ?} C --|是: A 的划分点太靠右| D[向左收缩: right i - 1] C --|否| E{B[j-1] A[i] ?} E --|是: A 的划分点太靠左| F[向右收缩: left i 1] E --|否: 完美命中| G[根据奇偶性直接计算中位数]虚拟边界处理消除复杂的if-else越界特判当切刀切在数组最边缘时如 $i 0$ 或 $i m$$A[i-1]$ 或 $A[i]$ 会发生数组越界。传统写法需要写一长串冗长的三元表达式。我们可以引入正负无穷虚拟哨兵值若 $i 0$定义 $A[i-1] -\infty$Integer.MIN_VALUE若 $i m$定义 $A[i] \infty$Integer.MAX_VALUE若 $j 0$定义 $B[j-1] -\infty$若 $j n$定义 $B[j] \infty$。这样交叉有序判定直接统一为一行逻辑极其优雅。标准生产级代码落地public class FindMedianSortedArraysSolution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { // 保证对较短数组进行二分时间复杂度优化为 O(log(min(m, n))) if (nums1.length nums2.length) { return findMedianSortedArrays(nums2, nums1); } int m nums1.length; int n nums2.length; int left 0; int right m; // 划分点 i 可以取 0 到 m共 m1 种可能 int totalLeft (m n 1) / 2; while (left right) { int i left ((right - left) 1); int j totalLeft - i; int nums1LeftMax (i 0) ? Integer.MIN_VALUE : nums1[i - 1]; int nums1RightMin (i m) ? Integer.MAX_VALUE : nums1[i]; int nums2LeftMax (j 0) ? Integer.MIN_VALUE : nums2[j - 1]; int nums2RightMin (j n) ? Integer.MAX_VALUE : nums2[j]; if (nums1LeftMax nums2RightMin nums2LeftMax nums1RightMin) { // 完美划分计算中位数 if ((m n) % 2 1) { return Math.max(nums1LeftMax, nums2LeftMax); } else { return (Math.max(nums1LeftMax, nums2LeftMax) Math.min(nums1RightMin, nums2RightMin)) / 2.0; } } else if (nums1LeftMax nums2RightMin) { // nums1 切得太靠右了需要向左缩 right i - 1; } else { // nums2 切得太靠右nums1 切得太靠左需要向右扩展 left i 1; } } throw new IllegalArgumentException(输入数组不符合升序前置约束); } }复杂度与面试答题技巧时间复杂度只在长度为 $m$ 的数组上做二分每次排除一半区间严格保证 $O(\log(\min(m, n)))$空间复杂度仅使用常数个局部指针与哨兵变量严格为 $O(1)$。在面试现场千万不要直接上手堆代码。先在白板上画出总左半区与总右半区的划分草图写出 $j \frac{mn1}{2} - i$ 的数学约束再给出正负无穷哨兵的处理思路。面试官对你的数学建模与工程实现能力将给予极高的评价。
延伸阅读

更多相关文章

2026/11/5 0:38:33

AI Agent失控风险防控:从权限隔离到工作流测试的工程实践

最近 AI Agent 相关的讨论热度一直不低,尤其在多智能体协作、智能体开发、智能体工作流验证这些方向被反复提起之后,一个更具冲击力的说法也频繁出现:“有顶级预测者给出了 72% 的概率,认为当前已经存在人类不知情的失控 AI 智能体…

2026/11/7 16:24:54

温岭电工证哪里办理 上岗必备怎么搞清楚

温岭电工证哪里办理 上岗必备怎么搞清楚 之前考的证在外省能不能转过来?这个问题,不少在外地打工、回老家发展的电工都遇到过。现在想在温岭找个电工相关的工作,手里拿着外地的电工证,不知道能不能直接用,这成了很多人的“上岗必备”难题。其实,只要了…

2026/11/7 16:24:54

甘肃在哪里考电工证怎么准备考前押题才能一次过

甘肃在哪里考电工证怎么准备考前押题才能一次过 你是不是正愁找不到电工证报名点,又担心考试不过?别急,甘肃考电工证的地方其实就那么几个,但你得先搞清楚怎么报名、多少钱、还要怎么备考,尤其是现在 考前押题…

2026/11/7 16:24:54

深圳电工证哪里可考真实经历:怕考不过白交培训费?我帮你避坑

深圳电工证哪里可考真实经历:怕考不过白交培训费?我帮你避坑 怕考不过白交培训费?深圳电工证哪里可考?我有个朋友老李,是平顶山某建筑工地上的电工,去年为了考电工证,花了将近3000块找培训机构,结果考试一次没过,心里那个难受劲儿没法说。后来他…

2026/11/7 16:24:54

特种作业证考试培训多少钱?实操考试心里没底怕挂科

特种作业证考试培训多少钱?实操考试心里没底怕挂科 你是不是也这样,报名了特种作业证考试培训,但实操考试一上手就紧张,怕挂科,怕浪费钱?尤其是面对【特种作业证考试培训多少钱】这个问题,心里没底,怕报了培训班还考不过。其实,很多人都是这样,尤其…

2026/11/7 16:24:54

低压电工证费县怕考不过白交培训费?良心建议来了

低压电工证费县怕考不过白交培训费?良心建议来了 怕考不过白交培训费?费县低压电工证报考前你必须知道的真相。很多学员在报名前都担心花了钱最后却考不过,白白浪费时间和金钱,尤其对于咱们这种小施工企业负责人来说,证照不仅是资格,更是饭碗。今天我就…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑