20. 求两个有序数组的中位数

leetcode 4 lintcode 65 | 数组 二分搜索 分治 |

温馨提示:您没有权限查看当前视频。 立即购买观看视频

问题

这个题目说的是,给你两个排好序的整数数组 nums1 和 nums2,假设数组是以递增排序的,数组的大小分别是 m 和 n。你要找到这两个数组的中位数。要求算法的时间复杂度是 O(log(m+n))。

这里两个数组中位数的意思是,两个数组合到一起排序后,位于中间的那个数,如果一共有偶数个,则是位于中间的两个数的平均数。

比如说,给你的两个数组是:

1, 3
2

它们放在一起排序后是:

1, 2, 3

所以中位数就是 2。

再比如说,给你的两个数组是:

1, 3
2, 4

它们放在一起排序后是:

1, 2, 3, 4

所以中位数就是 (2 + 3) / 2 = 2.5。

关于 AlgoCasts

AlgoCasts 旨在用心做好每一个算法讲解视频。每个视频包含两个部分:题目的剖析讲解以及编码,力求在讲解清楚到位的基础上,尽可能地保持视频精简短小,让大家可以在碎片时间里进行学习,并收获这些算法题背后的思想与乐趣。