Median of Two Sorted Arrays in Python with Binary Search (No Slicing) Real O(log(min(m, n)))
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 == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000-10^6 <= nums1[i], nums2[i] <= 10^6
Solution
Most Python solution you can find usding either this or kth solution they sliced the nums1 and nums2 for loop and it makes the time complexity from $O(\log n)$ to $O(n\log n)$.
Slicing Examples:
Optimized
Here I share a solution using pointer to avoid such the problem so that we can really get the $O(\log min(m, n))$ time complexity.

| |
If you don’t understand the concept please have a look at the below video first by @tusharroy2525.