每日一题------leetcode基础题之两个有序数组的合并

简介: 每日一题------leetcode基础题之两个有序数组的合并

本题来自与leetcode基础题之:合并两个有序数组

详情请点击88.合并两个有序数组

题目:

题目要求

简单分析:

根据题目呢,实现的就是将nums2数组中的元素合并到nums1数组中,因此nums1数组要将足够大,其次,想实现这个功能,我们可以用简单的归并思想。

那么什么是归并思想?看下面这个例子

下面有两个数组,nums1,nums2,咱们先设置两个变量,end1,end2,让这两个变量分别从数组的最后一项开始访问,判断两个变量值的大小,谁大,谁就放在num1数组的最后一项,并且进行向左移动。当其中一个变量减到数组下标小于0的位置,那么,就说明其中一个结束了,此时判断谁先结束,要是nums1先结束,那么要把nums2的数据弄过去,要是nums2先结束,那么nums2就不用做处理。

这就是大致思想,接下来用代码实现:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
  int end1=m-1,end2=n-1;
  int end=m+n-1;
  while(end1 >=0 && end2 >=0)
  {
    if(nums1[end1]>nums2[end2])
    {
        nums1[end--]=nums1[end1--];
    }
    else
    {
        nums1[end--]=nums2[end2--];
    }
  }
  while(end2>=0)
  {
      nums1[end--]=nums2[end2--];
  }
}

运行结果:

可以看到没有出现报错,说明代码实现没有问题;

文章到这里就结束了,有什么问题可以随时私信我哦

相关文章
|
1月前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
1月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
1月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
1月前
|
Python
【Leetcode刷题Python】977. 有序数组的平方
解决LeetCode "有序数组的平方" 问题的方法:使用Python内置的快速排序、直接插入排序(但会超时)和双指针技术,并给出了每种方法的Python实现代码。
12 1
【Leetcode刷题Python】977. 有序数组的平方
|
1月前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
1月前
|
Python
【Leetcode刷题Python】108. 将有序数组转换为二叉搜索树
LeetCode上108号问题"将有序数组转换为二叉搜索树"的Python实现,通过递归选取数组中间值作为根节点,构建高度平衡的二叉搜索树。
21 2
|
1月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
43 0
|
1月前
|
Python
【Leetcode刷题Python】26. 删除有序数组中的重复项
本文提供了一种使用快慢指针法在原地删除升序数组中重复元素的Python实现,返回删除后数组的新长度,同时保持元素的相对顺序。
25 0
|
1月前
|
存储 Python
【Leetcode刷题Python】88. 合并两个有序数组
合并两个有序数组的方法:正向双指针法和逆向双指针法,都具有O(m+n)的时间复杂度,但前者的空间复杂度为O(m+n),后者的空间复杂度为O(1),并给出了Python语言的实现代码。
29 0
|
2月前
|
Java
力扣经典150题第五十八题:合并两个有序链表
力扣经典150题第五十八题:合并两个有序链表
26 2