当前位置: 首页 > article >正文

题海拾贝:力扣 88.合并两个有序数组

      Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

91bfeb2bb1414a2ebf09cbc4f9706779.gif

我的博客:<但凡.

我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》

欢迎点赞,关注!

1、题目

0eb9513f2c524e69ac33fa2ac6ba39f3.png 2、题解

        在这里我们提供两种解决思路,第一种是一种经典的归并排序的核心解决思路。而第二种是更适用于这道题的解决思路。

思路一:

        我们新建一个数组(辅助数组),然后遍历原来的两个数组,每次通过比较放入较小的元素:

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> nums3(m+n);
        int i=0;int j=0;int t=0;
        while((i<m)&&(j<n))
        {
            if(nums1[i]<=nums2[j]){nums3[t++]=nums1[i++];}
            else{nums3[t++]=nums2[j++];}
        }
        while(i<m){nums3[t++]=nums1[i++];}
        while(j<n){nums3[t++]=nums2[j++];}
        for(i=0;i<n+m;i++){nums1[i]=nums3[i];}
    }
};

思路二:

        思路二的实现和思路一非常像,但是需要注意的是我们要从后往前遍历。因为从前往后遍历的话,会导致我们num1的原有元素被覆盖

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i=m-1;
        int j=n-1;
        int t=m+n-1;
        while(i>=0&&j>=0)
        {
            if(nums2[j]>=nums1[i])
            {
                nums1[t--]=nums2[j--];
            }
            else
            nums1[t--]=nums1[i--];
        }
        while(j>=0)
        {
            nums1[t--]=nums2[j--];
        }
    }
};

        好了,今天的内容就分享到这,我们下期再见!

 


http://www.kler.cn/a/452952.html

相关文章:

  • Apache Doris 创始人:何为“现代化”的数据仓库?
  • 对gPTP上PTP安全控制的评估
  • 一、Hadoop概述
  • 支持向量机入门指南:从原理到实践
  • 常用的Django模板语言
  • iOS开发代码块-OC版
  • Python3 爬虫 开发Scrapy下载器中间件
  • 开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
  • Python基础学习的资料
  • 每天40分玩转Django:Django类视图
  • Oracle、ACCSEE与TDMS的区别
  • 华为OD E卷(100分)31-敏感字段加密
  • github如何给本机绑定 ssh密钥(MACOS)
  • React图标库: 使用React Icons实现定制化图标效果
  • 利用Java爬虫获取速卖通(AliExpress)商品详情的详细指南
  • Xshell 和 Xftp 更新提示问题的解决方法及分析
  • 【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)
  • Go语言gRPC与gozero的api
  • 如何选择最佳时间进行WordPress网站维护避免流量损失
  • 轻量级安全云存储方案Hoodik
  • 分布式协同 - 分布式事务_2PC 3PC解决方案
  • 【Java基础面试题044】使用new String(“哈哈“)语句会创建几个对象?
  • C++-------动态内存管理
  • LDR6020在iPad一体式键盘的创新应用
  • Spring提供了很好事务管理机制
  • Mac提示:安装anycast后台服务进程失败