一、 寻找2个有序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个 正序数组的中位数。
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
时间复杂度 要求< O(log (m+n))
二分法 O(log min(m,n))
class Solution:
def findMedianSortedArrays(self,nums1: List[int], nums2: List[int]):
m,n=len(nums1),len(nums2)
if m > n:
nums1, nums2, m, n = nums2, nums1, n, m
if n == 0:
raise ValueError
imin, imax, k = 0, m, (m + n)//2
while imin <= imax:
i=(imin + imax) // 2
j=k-i
if i < m and nums2[j-1] > nums1[i]:
# i is too small, must increase it
imin = i + 1
elif i > 0 and nums1[i-1] >