LeetCode——合并两个有序数组(双指针)

简介: LeetCode——合并两个有序数组(双指针)

题目描述

image.png

解题思路

  1. 首先使用splice方法,将nums1和nums2指定位置之后的无关元素去除。
  2. 如果二者其中有一个是空数组,则直接push到nums1中。
  3. 定义双指针,进行依次比较,小的放到nums1中。
  4. 判断左右指针谁先走到头的情况。

AC代码

var merge = function(nums1, m, nums2, n) {
  nums1.splice(m)
  nums2.splice(n)
  if (nums1.length === 0 || nums2.length === 0) {
    nums1.push(...nums2);
    return;
  }
  // 定义左指针
  let left = 0;
  // 定义右指针
  let right = 0;
  // 定义最终结果数组
  let result = [];
  // 当双方都没有走到头的时候
  while (left != nums1.length && right != nums2.length) {
    if (nums1[left] <= nums2[right]) {
      left++;
    } else {
      nums1.splice(left,0,nums2[right])
      right++
    }
  }
  // 如果是左指针走到头了,但是右指针还没有
  if (left === nums1.length && right != nums2.length) {
    nums1.push(...nums2.slice(right));
  }
  // 如果是右指针走到头了,但是左指针还没有
  if (right === nums1.length && left != nums2.length) {
    nums1.push(...nums1.slice(left));
  }
};
复制代码

题目反思

  • 学会使用splice方法添加元素。
  • 注意题目的要求是原地排序,直接赋值给一个参数是不会通过测试的。
  • 学会使用双指针。
相关文章
|
2月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
38 2
|
4月前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
2月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
43 0
|
4月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
4月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
4月前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
4月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
56 0
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
124 2