InterviewHubPRO
Section Overview
Q52

Question 52 of 100

Part 6: Binary Search & Search on Answer (46 - 52)

52%
DSA Patterns (Multi-Lang)•Part 6: Binary Search & Search on Answer (46 - 52)

Median of Two Sorted Arrays.

In Simple Words: Binary search on the partition of the smaller array. Partition both arrays such that leftPartitionSize === (M + N + 1) / 2. Valid when maxLeft1 <= minRight2 and maxLeft2 <= minRight1.

  • Time: $O(\log(\min(M, N)))$ | Space: $O(1)$
Multi-Language Solutions
Switch tabs or choose All
def findMedianSortedArrays(nums1: list[int], nums2: list[int]) -> float:
    if len(nums1) > len(nums2):
        nums1, nums2 = nums2, nums1
    m, n = len(nums1), len(nums2)
    l, r = 0, m
    while l <= r:
        i = (l + r) // 2
        j = (m + n + 1) // 2 - i
        max_l1 = float('-inf') if i == 0 else nums1[i - 1]
        min_r1 = float('inf') if i == m else nums1[i]
        max_l2 = float('-inf') if j == 0 else nums2[j - 1]
        min_r2 = float('inf') if j == n else nums2[j]

        if max_l1 <= min_r2 and max_l2 <= min_r1:
            if (m + n) % 2 == 1:
                return float(max(max_l1, max_l2))
            return (max(max_l1, max_l2) + min(min_r1, min_r2)) / 2.0
        elif max_l1 > min_r2:
            r = i - 1
        else:
            l = i + 1
    return 0.0