面试高频手撕题 | 09.将两个有序数组合并成一个有序数组

alt

一、知识点

  1. 归并排序:归并排序(Merge sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
  2. 双指针:在遍历数组或链表时,使用两个指针进行配合操作,可以提高遍历效率和解决一些特定问题。

二、思路分析

  1. 将两个有序数组合并成一个有序数组,可以使用归并排序的思想来解决。
  2. 首先,分别对两个数组进行排序,得到两个有序数组。
  3. 然后,使用双指针分别从两个有序数组的开头开始遍历。
  4. 比较两个指针指向的元素,将较小的元素放入合并后的数组中,然后将指向较小元素的指针向右移动一位。
  5. 重复步骤 4,直到某个指针超出数组边界。
  6. 将剩余的元素直接放入合并后的数组中。

三、JavaScript 解答

以下是使用 JavaScript 实现将两个有序数组合并成一个有序数组的代码:

function mergeArrays(arr1, arr2) {
    let mergedArray = [];
    let i = 0, j = 0;

    while (i < arr1.length && j < arr2.length) {
        if (arr1[i] < arr2[j]) {
            mergedArray.push(arr1[i]);
            i++;
        } else {
            mergedArray.push(arr2[j]);
            j++;
        }
    }

    mergedArray = mergedArray.concat(arr1.slice(i), arr2.slice(j));

    return mergedArray.sort((a, b) => a - b);
}

const arr1 = [1, 4, 7];
const arr2 = [2, 5, 8, 10];

console.log(mergeArrays(arr1, arr2)); 

在上述代码中,我们定义了一个名为 的函数,它接受两个参数 和 ,表示两个需要合并的有序数组。我们使用两个指针 和 分别指向 和 的开头。然后,我们通过比较两个指针指向的元素来决定将哪个元素放入合并后的数组 中,并将指向较小元素的指针向右移动一位。最后,我们将剩余的元素直接放

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024前端面试高频手撕题 文章被收录于专栏

2024前端面试高频手撕题的作用包括但不限于提升面试竞争力、检验基础知识掌握程度、提高问题解决能力等。本专栏从知识点,思路分析,JavaScript解答,Java解答,总结等五个方面全方面解答。适用于:准备前端开发岗位面试的求职者、希望提升前端开发技能和知识的学习者、准备升职或跳槽的前端开发人员。掌握面试高频手撕题都是非常有益的,它能够帮助你建立起扎实的前端基础知识和问题解决能力。

全部评论
双指针分为以下两种: 首尾双指针:首部一个指针指向之前数组的第一个元素,尾部指向数据的最后一个元素。 首部双指针:两个指针初始化值同时指向第一个元素。 使用双指针可以减少数据的遍历次数,提高算法效率。
点赞 回复 分享
发布于 2024-01-16 00:12 广东
使用双指针和归并排序的思想可以有效地将两个有序数组合并成一个有序数组
点赞 回复 分享
发布于 2024-01-16 00:02 广东

相关推荐

点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务