这个题比较简单,就是将两个数组合并并排序,然后找到中位数。合并排序的方法有很多种。
方法一:递归合并数组排序
var findMedianSortedArrays = function(nums1, nums2) {
let arr=[];
const sortArr=(nums1,nums2)=>{
if(nums1.length===0&&nums2.length===0)return;
if(nums1.length===0){
arr=[...arr,...nums2];
return;
}
if(nums2.length===0){
arr=[...arr,...nums1];
return;
}
if(nums1[0]>nums2[0]){
arr.push(nums2.shift());
sortArr(nums1,nums2);
}else if(nums1[0]<nums2[0]){
arr.push(nums1.shift());
sortArr(nums1,nums2);
}else{
arr.push(nums1.shift());
arr.push(nums2.shift());
sortArr(nums1,nums2);
}
}
sortArr(nums1,nums2);
let len = arr.length;
if(len%2===0){
return (parseFloat(arr[len/2])+parseFloat(arr[len/2-1]))/2;
}else{
return arr[(len-1)/2];
}
};
方法二:直接sort排序
var findMedianSortedArrays = function(nums1, nums2) {
let arr = nums1.concat(nums2);
arr.sort((x,y)=>x-y);
let len = arr.length;
if(len%2===0){
return (parseFloat(arr[len/2])+parseFloat(arr[len/2-1]))/2;
}else{
return arr[(len-1)/2];
}
};