> 文章列表 > 【快乐手撕LeetCode题解系列】——合并两个有序数组

【快乐手撕LeetCode题解系列】——合并两个有序数组

【快乐手撕LeetCode题解系列】——合并两个有序数组

【快乐手撕LeetCode题解系列】——合并两个有序数组😎

  • 前言🙌
    • 消失的数字🙌
      • 画图分析:
      • 源代码分享:😍
  • 总结撒花💞


追梦之旅,你我同行

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
在这里插入图片描述

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——合并两个有序数组~ 都是精华内容,可不要错过哟!!!😍😍😍

消失的数字🙌

题目描述:
【快乐手撕LeetCode题解系列】——合并两个有序数组
【快乐手撕LeetCode题解系列】——合并两个有序数组

画图分析:

【快乐手撕LeetCode题解系列】——合并两个有序数组
思路分析:

  • 首先是认真审题,看清楚题目要求,理解函数形参的意思。这里有两个参数是无需用到的。
  • 这里定义三个指针,end1,end2,end。其实下标就是相当于进行操作指针。
  • 首先让end1指向nums1数组最后一个元素,end2指向nums2的最后一个元素。让end指向nums1数组空间的最后一个位置。
  • 当end1和end2都没有遍历完时,比较他们所指向的元素大小。
  • 因为题目说明是非递减的,因此我们要把较大值先放到 end 下标的位置。然后再让他们往前各走一步。重复上述步骤。
  • 当nums1先遍历完时,只需要将nums2剩下没有遍历的数组元素按照从后往前依次拷贝到nums1的end下标的位置中。

源代码分享:😍

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

程序输出结果验证: 😊
【快乐手撕LeetCode题解系列】——合并两个有序数组

总结撒花💞

   本篇文章旨在分享【快乐手撕LeetCode题解系列】——合并两个有序数组。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘