LeetCode每日刷题1-4.寻找两个正序数组的中位数(JavaScript)

LeetCode题目4.寻找两个正序数组的中位数(JavaScript解法)

题目来源:力扣(LeetCode)

题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 

示例 1:

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2


示例 2:

输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

解题思路:

两个数组进行组合排序由小到大,整合为一个数组进行遍历

遍历数组后利用下标奇偶性寻找中位数,如:

[1,2,3]
 0 1 2 

中位数为2,下标为1

[1,2,3,4,5,6]
 0 1 2 3 4 5

中位数为(3+4)/2 = 3.5

下标为2,3

需要用到数组长度,长度为奇数则中位数等于下标中间数,长度为偶数则需将中间两位数相加除二

实现代码:

var findMedianSortedArrays = function(nums1, nums2) {
    const abb = [nums1,nums2];
    let middle = 0;
    let result = abb.flat().sort((a, b) => a-b);
     middle = 0;
    if((result.length - 1) % 2 == 0){
    let i = (result.length - 1) / 2;
    middle = result[i];
    }else{
    if((result.length - 1) % 2 == 1){
    i = Math.floor((result.length - 1)/2);
    middle = (result[i] + result [i+1]) / 2;
        }
    }
    return middle;
};
posted @ 2021-04-25 17:08  ❀Camelia  阅读(124)  评论(0)    收藏  举报