Skip to main content

4. Median of Two Sorted Arrays

Median of Two Sorted Arrays - LeetCode

找出兩個 sorted array 合併後的 median

難點在於 O(log(m + n))

直接合併是 O(n + m),不夠快


二分搜索

以第一個陣列為主

找出分界線,滿足:

  • 左邊所有元素比右邊所有元素大
  • 元素數目為所有數目的一半

二分搜索調整第一個陣列分界線

第二個陣列分界線為 所有數目一半 減去 第一個陣列分界線的左邊元素數目


左邊界 i = 0

右邊界 j = len(nums1) - 1


第一個 array 分界線切在中間

因為 median 所在的位置一定是 total / 2

第二個 array 分界線是第一個分界線用剩的數目


切分完檢查滿不滿足條件

(左邊所有 value > 右邊)


右邊 > 左邊代表切的位置太右邊

把二分搜索的右邊界移去中間

反之亦然


Edge case

其中一個 array 完全大於另一個 array

檢測頭尾