• 算法每日一题(合并两个有序的数组)


    在本篇文章里,我将分享一道很经典的算法题———合并两个有序的数组,并且分享解题思路,希望可以帮助到你😀😀😀

    合并两个有序的数组_牛客题霸_牛客网

    题目描述:

    给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组

    数据范围:

    0≤n,m≤100,|A_i| <=100∣Ai​∣<=100,|B_i| <= 100∣Bi​∣<=100

    注意:

    1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n

    2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且后台会自动将合并后的数组 A 的内容打印出来,所以也不需要自己打印

    3. A 数组在[0,m-1]的范围也是有序的

    示例1:

    输入:[4,5,6],[1,2,3】

    返回值:[1,2,3,4,5,6]

    说明:A数组为[4,5,6],B数组为[1,2,3],后台程序会预先将A扩容为[4,5,6,0,0,0],B还是为[1,2,3],m=3,n=3,传入到函数merge里面,然后请同学完成merge函数,将B的数据合并A里面,最后后台程序输出A数组

    示例2

    输入:[1,2,3],[2,5,6]

    返回值:[1,2,2,3,5,6]

    以下代码均经过牛客测试,均正确,请放心测试😊😊😊

    解题思路:

    设一个新数组C,两数组依次进行比较,小的尾插到新数组

    代码:

    1. void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
    2. {
    3. int i=m-1,j=n-1;
    4. int dst=m+n-1;
    5. while(i>=0&&j>=0)
    6. {
    7. if(nums1[i]>nums2[j])
    8. {
    9. nums1[dst--]=nums1[i--];
    10. }
    11. else
    12. nums1[dst--]=nums2[j--];
    13. }
    14. while(i>0)
    15. {
    16. nums1[dst--]=nums1[i--];
    17. }
    18. while(j>=0)
    19. {
    20. nums1[dst--]=nums2[j--];
    21. }
    22. }

    结果展示:

    最后

    十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

    01.“以前我觉得成绩不重要。清华、北大、复旦、交大,只能代表学生时代的成就。后来我发现,努力是种习惯,它会贯穿终生。”

    02.等你优秀了,你想要的都会来找你。

    03.你可以不漂亮,也可以不爱打扮,甚至可以很胖,你可以不优秀,可以不上进,甚至可以不聪明。但,我不可以。

    04.头等舱可以优先登机银行VIP可以不用排队演唱会最贵的票位置也最好世界从不平等你有多努力就有多特殊.

    05.多读点书,要不然你的三观是由你的亲朋好友决定的。

    最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

    **愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!**

  • 相关阅读:
    QT中QSS设置的三种方法
    Ubuntu下安装Go
    cocos:MotionStreak拖尾渐隐效果
    在vite项目中添加Cesium,我们如何让它完美运行?
    高项 06 项目进度管理
    途虎养车上市、京东养车“震虎”,如何突围汽车后市场?
    藏宝计划TreasureProject(TPC)系统模式开发技术原理
    HTML5的新增表单元素
    centos7 探测某个tcp端口是否在监听
    为什么访问同一个网址却返回不同的内容
  • 原文地址:https://blog.csdn.net/m0_68865259/article/details/127129579