Binary Search

February 14, 2025

1. Median of Two Sorted Arrays

Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.

The overall run time complexity should be O(log (m+n)).

Example 1:

  • Input: nums1 = [1,3], nums2 = [2]
  • Output: 2.00000
  • Explanation: merged array = [1,2,3] and median is 2.

Example 2:

  • Input: nums1 = [1,2], nums2 = [3,4]
  • Output: 2.50000
  • Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.

Constraints:

  • nums1.length == m
  • nums2.length == n
  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • -106 <= nums1[i], nums2[i] <= 106

Solution

var findMedianSortedArrays = function (nums1, nums2) {
    const isEven = (nums1.length + nums2.length) % 2 === 0;
    let midIndex = Math.floor((nums1.length + nums2.length) / 2)
    let n1 = 0, n2 = 0;
    let curr = 0, prev = 0;
    for (let i = 0; i <= midIndex; i++) {
        prev = curr
        if (n1 < nums1.length && (n2 >= nums2.length || nums1[n1] < nums2[n2])) {
            curr = nums1[n1++]
        } else {
            curr = nums2[n2++]
        }
    }
    return isEven ? (curr + prev) / 2 : curr
};