4. Median of Two Sorted Arrays
Hard
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.
Example 3:
- Input: nums1 = [0,0], nums2 = [0,0]
- Output: 0.00000
Example 4:
- Input: nums1 = [], nums2 = [1]
- Output: 1.00000
Example 5:
- Input: nums1 = [2], nums2 = []
- Output: 2.00000
Constraints:
-
nums1.length == m
-
nums2.length == n
-
0 <= m <= 1000
-
0 <= n <= 1000
-
1 <= m + n <= 2000
-
-106 <= nums1[i], nums2[i] <= 106
Solution:
class Solution {
/**
* @param Integer[] $nums1
* @param Integer[] $nums2
* @return Float
*/
function findMedianSortedArrays($nums1, $nums2) {
$mergedArray = [];
$totalLength = count($nums1) + count($nums2);
$median = ($totalLength / 2);
if ($totalLength % 2 === 0) {
$index = [$median - 1, $median];
} else {
$index = [floor($median)];
}
$i = 0;
$i1 = 0;
$i2 = 0;
while ($i < $totalLength) {
if (!isset($nums1[$i1])) {
$mergedArray[] = $nums2[$i2];
$i2++;
$i++;
continue;
}
if (!isset($nums2[$i2])) {
$mergedArray[] = $nums1[$i1];
$i1++;
$i++;
continue;
}
if ($nums1[$i1] < $nums2[$i2]) {
$mergedArray[] = $nums1[$i1];
$i1++;
} else {
$mergedArray[] = $nums2[$i2];
$i2++;
}
$i++;
}
return isset($index[1])
? ($mergedArray[$index[0]] + $mergedArray[$index[1]]) / 2
: $mergedArray[$index[0]];
}
}
Contact Links
Top comments (0)