## DEV Community

MD ARIFUL HAQUE

Posted on • Updated on

# 4. Median of Two Sorted Arrays

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]];
}
}
``````