Problem:
Given two sorted arrays nums1
and nums2
of size m
and n
respectively, return the median of the two sorted arrays.
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.
Function Definition
function findMedianSortedArrays(nums1: number[], nums2: number[]): number {
Explanation:
- This line defines a function named
findMedianSortedArrays
. - It takes two parameters:
nums1
, an array of numbers, andnums2
, another array of numbers. - It returns a number, which is presumably the median of the merged arrays.
Merging and Sorting
let mergeArr = [];
let findMedian = 0;
let medianArr = [];
let findMedianLength = 0;
mergeArr.push(...nums1, ...nums2);
const sortedArr = mergeArr.sort((a, b) => a - b);
Explanation:
- We initialize four variables:
mergeArr
to store the merged arrays,findMedian
to store the length ofmergeArr
,medianArr
to hold middle elements (if needed), andfindMedianLength
to store the calculated median. - We merge
nums1
andnums2
arrays intomergeArr
using thepush()
method and the spread syntax (...
). - We sort
mergeArr
in ascending order using thesort()
method. The comparison function(a, b) => a - b
ensures numerical sorting.
Determining Median
findMedian = sortedArr.length;
const isEven = sortedArr.length % 2 === 0;
Explanation:
- We set
findMedian
to the length ofsortedArr
. - We determine whether the length of
sortedArr
is even by checking if the remainder of division by 2 equals 0.
Handling Even Length
if (isEven) {
medianArr.push(mergeArr[Math.floor(findMedian / 2) - 1], mergeArr[Math.floor(findMedian / 2)]);
for (let i = 0; i < medianArr.length; i++) {
if (!isNaN(medianArr[i + 1])) {
findMedianLength = (medianArr[i] + medianArr[i + 1]) / 2;
}
}
}
Explanation:
- If
sortedArr
has an even length:- We calculate the two middle elements and push them into
medianArr
. - We iterate over
medianArr
to find the middle two elements and calculate their average.
- We calculate the two middle elements and push them into
Handling Odd Length
else {
medianArr.push(mergeArr[Math.ceil(findMedian / 2 - 1)]);
const convertMedianArr = medianArr.join('');
findMedianLength = Number(convertMedianArr);
}
Explanation:
- If
sortedArr
has an odd length:- We calculate the single middle element and push it into
medianArr
. - We convert
medianArr
to a string, then parse it back to a number and assign it tofindMedianLength
.
- We calculate the single middle element and push it into
Returning Median
return findMedianLength;
Explanation
- We return the calculated median value.
Full Code:
function findMedianSortedArrays(nums1: number[], nums2: number[]): number {
let mergeArr = [];
let findMedian = 0;
let medianArr = [];
let findMedianLength = 0;
mergeArr.push(...nums1, ...nums2)
const sortedArr = mergeArr.sort((a, b) => a - b);
findMedian = sortedArr.length;
const isEven = sortedArr.length % 2 === 0
if(isEven) {
medianArr.push(mergeArr[Math.floor(findMedian / 2) - 1], mergeArr[Math.floor(findMedian / 2)])
for(let i = 0; i < medianArr.length; i++){
if(!isNaN(medianArr[i + 1])){
findMedianLength = (medianArr[i] + medianArr[i + 1]) / 2;
}
}
}else {
medianArr.push(mergeArr[Math.ceil(findMedian / 2 - 1)])
const convertMedianArr = medianArr.join('')
findMedianLength = Number(convertMedianArr)
}
return findMedianLength
};
← Previous article
10 Useful JavaScript Snippets you should know about
Next article →
What is the difference between map and foreach ?
About Muhaymin Bin Mehmood
Front-end Developer skilled in the MERN stack, experienced in web and mobile development. Proficient in React.js, Node.js, and Express.js, with a focus on client interactions, sales support, and high-performance applications.