1. 程式人生 > >leetcode(2)尋找兩個有序陣列的中位數的js實現

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