寻找两个正序数组的中位数
leetcode第四题(困难)
题目:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的中位数。
要求:时间复杂度为 O(log (m+n))
简单解法:归并排序+找中位数
正确解法:
中位数即第(n+m)/2 个最小数,即求第K小数
从时间复杂度可以看出使用二分查找法
- 在两个数组中,分别查找第k/2小数,若
nums1
的第k/2数小于nums2的第
k/2数, - 则nums1的前k/2不可能有中位数,将其去掉,
- 再次进行,查找第k-k/2个数,以此类推
- (细节具体讨论)