leetcode(2)寻找两个有序数组的中位数的js实现

一.题目描述:

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。

请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1 和 nums2 不会同时为空。

示例 1:

nums1 = [1, 3]
nums2 = [2]

则中位数是 2.0
示例 2:

nums1 = [1, 2]
nums2 = [3, 4]

则中位数是 (2 + 3)/2 = 2.5

二.js代码实现:

1.思路:

(1)运用es6的延展操作符直接合并两个数组

(2)运用sort将新的数组num从小到大排序

(3)通过对合并后的数组元素个数奇偶性判定,返回不同情况下中位数

2.代码:

   /**
     * @param {number[]} nums1
     * @param {number[]} nums2
     * @return {number}
     */
    var findMedianSortedArrays = function(nums1, nums2) {    
        let num1 = [...nums1, ...nums2];
        let num = num1.sort((a,b) => {return a-b;});
        let m = parseInt((num.length) / 2);    
        let l =num.length;
        if (l % 2 == 0) 
        {
            return (num[m] + num[m-1])/2;
        } 
        else 
        {
            return num[m];
        }
    };

猜你喜欢

转载自blog.csdn.net/weixin_39676449/article/details/85625267