4. Median of Two Sorted Arrays (Hard) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
if len(nums1) > len(nums2):
nums1, nums2 = nums2, nums1
m, n = len(nums1), len(nums2)
l, r = 0, m
while l <= r:
m1 = (l + r) // 2
m2 = (m + n + 1) // 2 - m1
a = float("-inf") if m1 == 0 else nums1[m1 - 1]
b = float("inf") if m1 == m else nums1[m1]
c = float("-inf") if m2 == 0 else nums2[m2 - 1]
d = float("inf") if m2 == n else nums2[m2]
if a <= d and c <= b:
if (m + n) % 2:
return max(a, c)
else:
return (max(a, c) + min(b, d)) / 2.0
elif a > d:
r = m1 - 1
else:
l = m1 + 1