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方法添加元素。
  • 注意题目的要求是原地排序,直接赋值给一个参数是不会通过测试的。
  • 学会使用双指针。
目录
打赏
0
0
0
0
6
分享
相关文章
|
5月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
49 2
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
【算法】——双指针算法合集(力扣)
移动零,复写零,快乐数,盛最多水的容器,有效三角形的个数,和为s的两个数(查找总价格为目标值的两个商品 ),三数之和,四数之和
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
5月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
62 0
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
344 13
|
5月前
|
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
65 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等