Binary search on smaller array to find valid partition. Handle edge cases with infinity.
function findMedianSortedArrays(nums1, nums2): if len(nums1) > len(nums2): nums1, nums2 = nums2, nums1 m, n = len(nums1), len(nums2) left, right = 0, m while left <= right: i = (left + right) // 2 j = (m + n + 1) // 2 - i maxLeft1 = -infinity if i == 0 else nums1[i - 1] minRight1 = infinity if i == m else nums1[i] maxLeft2 = -infinity if j == 0 else nums2[j - 1] minRight2 = infinity if j == n else nums2[j] if maxLeft1 <= minRight2 and maxLeft2 <= minRight1: if (m + n) % 2 == 1: return max(maxLeft1, maxLeft2) return (max(maxLeft1, maxLeft2) + min(minRight1, minRight2)) / 2 elif maxLeft1 > minRight2: right = i - 1 else: left = i + 1
time, space.