二分+递归
如果某个有序数组长度是奇数,那么其中位数就是中间元素;如果长度是偶数,那么中位数就是中间两个数字的平均值.
假设两个有序数组的长度分别为 m
和 n
,由于两个数组长度之和 m+n
的奇偶不确定,为了简化代码,在合并后的数组找到第 (m+n+1)/2
个元素,和第 (m+n+2)/2
个元素(这里的 /
指的是整除),然后求两者平均值. 若 m+n
为偶数,那么两者平均值刚好是中位数;若 m+n
为奇数,那么 (m+n+1)/2
和 (m+n+2)/2
的值相等,相当于两个相同的数字相加再除以 2,还是中位数本身.
可以实现一个函数 findKth(k)
,返回两个有序数组合并后的第 k
个元素,最终答案为 findKth((m+n+1)/2)
和 findKth(m+n+2)/2
的平均值.
具体实现 findKth(k)
函数,需要对参数 k
进行二分处理:
- 分别在
nums1
和nums2