leetcode88合并两个有序数组

力扣(LeetCode)-合并两个有序数组
image.png

方法一 | 合并后排序

题目要求将两个有序数组合并并保证合并后的数组仍然有序。
观察题目可以看出,nums1的容量大小总是 m+n,所以 nums2能够合并到 nums1中。
那就将 nums1中未赋值的地方赋上 nums2的值,合并后不是排好序的,然后用一个排序算法(随便选择一个,这里用的是冒泡排序)将数组 nums1进行排序。

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

方法二 | 双指针

3f372348c4103ce15e2026b7e73d4c3c_1.gif
这个方法利用了两个数组原先已经排好序的这个特点。
对于数组 1 和数组 2,将这两个数组看成是两个队列,这两个队列的队头元素分别是其当前所在队列里最小的值的元素,所以只要比较这两个队头元素哪一个最小哪一个就先将其合并入一个新数组,这样将两个数组中的元素全部合并到一个新数组,最后把新数组的值一一赋值到数组nums1中。

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int arr[m+n];int temp,i=0,j=0;/*temp表示两个看做队列的数组中的队头较小的那一个值i指针指向数组nums1,j指针指向nums2数组*/while(i<m||j<n){//分别用i和j遍历两个数组,只要有一个数组还没有遍历完,while就不停止if(i==m){temp=nums2[j];j++;}else if(j==n){temp=nums1[i];i++;}//如果两个数组中的某一个遍历到头了,就直接获取另一个数组的下一个将要遍历的值,并把指针向下移一位以便下次取值else if(nums1[i]<nums2[j]){temp=nums1[i];i++;}else{temp=nums2[j];j++;}arr[i+j-1]=temp;}for(int k=0;k<m+n;k++){nums1[k]=arr[k];}}
};

方法三 | 方法二修改

方法二中引入了新的临时变量数组 arr,增加了空间复杂度。
之所以使用了中间数组 arr 是因为两个指针是从前往后遍历的,如果不使用临时 arr 而是直接赋值就会将原先 nums1 中的值覆盖掉。
如果两个指针从后往前遍历,就不会覆盖掉,就不需要使用数组 arr。
类似的,这个从后往前的双指针的算法获取的应该是两个看作是队列的数组的队尾中最大的那个值。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Agents系列—— 探究大模型的推理能力,关于Chain-of-Thought的那些事儿

一、写在前面&#xff1a;关于AI Agents与CoT 本文是2023.07.24发表在同名公众号「陌北有棵树」上的一篇文章&#xff0c;个人观点是基础理论的学习现在仍是有必要的&#xff0c;所以搬运过来。 今天要读的论文是《Chain-of-Thought Prompting Elicits Reasoning in Large La…

ABAP SQL CDSView Entity中使用正则RegEx表达式(Regular Expressions)

1. 正则表达式测试程序 DEMO_REGEXDEMO_REGEX_TOY 2. ABAP SQL & CDSView Entity支持正则语法的场景 SQL函数语法作用执行逻辑返回类型CDS View EntitiesABAP SQLLIKE_REGEXPRLIKE_REGEXPR( PCRE pcre, VALUE sql_exp1[, CASE_SENSIT…

Ubuntu系统服务器安装宝塔面板,可一键部署幻兽帕鲁服务端且可调整游戏参数

本来腾讯云服务器&#xff08;Windows系统和Ubuntu系统&#xff09;的一键运行命令即可部署安装幻兽帕鲁功能&#xff0c;让很多多轻松搭建了自己专属的服务器&#xff0c;这也是腾讯云服务器远远甩开阿里云服务器和华为云服务器及其他品牌服务器的原因&#xff0c;没想到现在其…

Pycharm快捷键大全

Pycharm快捷键大全 同样适用于JetBrains全家桶的其他工具&#xff0c;例如IDEA。 <kbd></kbd>用于定义按键输入 快捷键操作Alt1打开左侧ProjectAlt3打开Find窗口Alt7打开file structure窗口Shift10快速运行ShiftShift打开搜索对话框&#xff0c;查找&#xff0c;…

ANN论文总结

本文主要是个人笔记&#xff0c;记录与存储相关的ANN工作&#xff0c;想着写都写了不如发出来与大家分享&#xff0c;大多写得比较简单有些稍微详细一点&#xff0c;内容仅供参考。 CognitiveSSD S. Liang, Y. Wang, Y. Lu, et al. Cognitive SSD: A Deep Learning Engine for…

原生图数据库实现原理解析

目录 前言1 实现原理&#xff1a;免索引邻接1.1 免索引邻接构建1.2 查询性能保障 2. 物理存储实现2.1 节点存储文件2.2 关系边存储文件2.3 属性数据的存储处理 3. RDF图模型和属性图模型的比较3.1 RDF图模型3.2 属性图模型 4. 查询语言比较4.1. SPARQL4.2 Cypher4.3 Gremlin4.4…

基于密码技术的身份认证——基于对称密码体制的身份认证

一、符号说明&#xff1a; A→B&#xff1a;表示通信实体A向通信实体B发送消息&#xff1b; Ek(x)&#xff1a;表示用认证双方共享的密钥K对x进行加密&#xff1b; Text1&#xff0c;Text2&#xff0c;……&#xff0c;Text n属于可选项&#xff1b; ||&#xff1a;表示比特…

由浅入深!一文5张图教你做性能测试~

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

研究性学习背景

研究性学习是学生在教师指导下,从自然、社会和生活中选择和确定专题进行研究,并在研究过程中主动地获取知识、应用知识和解决问题的学习活动。是《普通高中课程方案(2017 年版 2020 年修订)》中“综合实践活动”的主要组成部分,是全体普通高中学生必须完成的国家必修课程,也…

【Web】CTFSHOW SQL注入刷题记录(上)

目录 无过滤注入 web171 web172 web173 web174 web175 时间盲注 写马 过滤注入 web176 web177 web178 web179 web180 web181-182 web183 web184 web185-186 web187 web188 web189 web190 布尔盲注 web191 web192 web193 web194 堆叠注入 web195 …

找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入&#xff1a;haystack &qu…

a-table自定义展开图标

原文来自&#xff1a;vue 修改ant中table表格的展开图标 树形表格expandIcon自定义图标 <template #expandIcon"props"><span v-if"props.record.children?.length > 0"><divv-if"props.expanded"style"display: inline…

作用力(Force)和压力(Pressure)的区别

一般&#xff0c;力和压力在方向以及数值大小给的准确的情况下是可以通用的&#xff0c; 但是相对而言&#xff0c;力比压力的给定方便一点&#xff0c;考虑的东西可以少一点&#xff0c; 对于流体的分析&#xff0c;应该给与压力去进行分析。 力的方向一般是恒定的&#xff…

Java线程池七大核心参数

Java面试题 线程池七大核心参数 corePoolSize:即使空闲&#xff0c;也要保留在池中的线程数&#xff0c;除非设置allowCoreThreadTimeOutmaximumPoolSize:线程池中允许的最大线程数。keepAliveTime:当线程数大于核心时&#xff0c;多余空闲线程在终止前等待新任务的最长时间un…

2024水资源、智慧城市与绿色发展国际会议(ICWRSCGD 2024)

2024水资源、智慧城市与绿色发展国际会议(ICWRSCGD 2024) 会议简介 2024年国际水资源、智慧城市与绿色发展大会&#xff08;ICWRSCGD 2024&#xff09;将在中国杭州举行。会议聚焦“水资源、智慧城市、绿色发展”这一最新研究领域&#xff0c;致力于促进世界顶级创新者、科学…

LeeCode 560.和为K的子数组

给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3]…

YOLOv8训练自己的数据集,通过LabelImg

记录下labelImg标注数据到YOLOv8训练的过程,其中容易遇到labelImg的坑 数据集处理 首先在mydata下创建4个文件夹 images文件夹下存放着所有的图片&#xff0c;包括训练集和测试集等。后续会根据代码进行划分。 json文件夹里存放的是labelImg标注的所有数据。需要注意的是&…

MySQL笔记-information_schema库中COLUMNS表的一些笔记

mysql建表中可以添加comment&#xff0c;也就是注释&#xff0c;这些注释会写到information_schema库的COLUMNS表中&#xff0c;可以使用如下SQL语句进行查询&#xff1a; SELECT COLUMN_NAME, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA your_data…

2024年第四届智能机器人与系统国际会议(ISoIRS 2024) | EI、Scopus双检索

会议简介 Brief Introduction 2024年第四届智能机器人与系统国际会议(ISoIRS 2024) 会议时间&#xff1a;2024年6月14日-16日 召开地点&#xff1a;中国长沙 大会官网&#xff1a;www.isoirs.org ISoIRS 2024将围绕“智能机器人与系统”的最新研究领域展开&#xff0c;为研究人…

将Html页面转换为Wordpress页面

问题&#xff1a;我们经常会从html源码下载网站上获得我们想要的网站内容框架&#xff0c;以及部分诸如联系我们&#xff0c;About 等内页&#xff0c;但是在文章的发布上&#xff0c;则远不如Wordpress简便。而Wordpress尽管有各种模板&#xff0c;但修改又比较麻烦。解决方法…