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 == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= 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.