题目

这个题比较简单,就是将两个数组合并并排序,然后找到中位数。合并排序的方法有很多种。

方法一:递归合并数组排序

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