HOT100——寻找两个正序数组的中位数(JS实现)

简介: HOT100——寻找两个正序数组的中位数(JS实现)

题目描述

image.png

解题思路

  • 本题采用双指针的解题方法。
  • 一个指针指向数组1。
  • 一个指针指向数组2。
  • 依次比较两个指针指向的元素的大小,谁小谁加到排序好的数组中,直到一方遍历完,将没遍历完的全部加到排序好的数组中即可。
  • 最后判断结果数组的个数是奇数还是偶数,如果是奇数直接返回中位数元素,如果是偶数则返回中位数元素和中位数元素后边的一位元素,两者求和然后/2,返回。

解题代码

var findMedianSortedArrays = function(nums1, nums2) {
    // 首先我们要明确一点,两个数组都是正序的
    // 双指针
    let left = 0;
    let right = 0;
    // 定义合并数组
    const mergeArr = [];
    // 当其中一个数组遍历到最后时结束
    while (left < nums1.length && right < nums2.length) {
        if (nums1[left] <= nums2[right]) {
            mergeArr.push(nums1[left]);
            left++;
        } else {
            mergeArr.push(nums2[right]);
            right++;
        }
    }
    if (right === nums2.length) {
        mergeArr.push(...nums1.slice(left))
    }
    if (left === nums1.length) {
        mergeArr.push(...nums2.slice(right))
    }
    if (mergeArr.length % 2) {
        return mergeArr[(mergeArr.length-1) >> 1]
    } else {
        return (mergeArr[(mergeArr.length-1) >> 1] + mergeArr[((mergeArr.length-1) >> 1) + 1]) / 2
    }
};

总结(本题给我们的启示思路)

  • 学会使用双指针的思路求解问题。
  • 学会使用位移的方式求中位数。
相关文章
|
2月前
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
39 2
|
2月前
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
29 3
|
2月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
45 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
49 1
|
2月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
28 5
|
2月前
|
JavaScript 前端开发 索引
探索JavaScript数组:基础
探索JavaScript数组:基础
20 3
|
2月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
62 1
|
2月前
|
JavaScript 前端开发 API
JS中数组的方法flat()怎么用
JS中数组的方法flat()怎么用
23 0
|
2月前
|
JavaScript 前端开发 索引
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
31 0
|
2月前
|
前端开发 JavaScript 索引
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
20 0