There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
class Solution(object):
def findMedianSortedArrays(self, A, B):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
m,n=len(A),len(B)
if m>n:
A,B,m,n=B,A,n,m
imin=0
imax=m
halflen=(m+n+1)/2
while imin<=imax:
i=(imin+imax)/2
j=halflen-i
if i<m and B[j-1]>A[i]:
imin=i+1
elif i>0 and A[i-1]>B[j]:
imax=i-1
else:
if i==0:
lmax=B[j-1]
elif j==0:
lmax=A[i-1]
else:
lmax=max(A[i-1],B[j-1])
if (m+n)%2==1:
return lmax
if i == m:
rmin = B[j]
elif j == n:
rmin = A[i]
else:
rmin = min(A[i], B[j])
return (lmax + rmin)/2.0
这题挺难,看了答案,这个二分法的思路挺精巧