一、题目描述
给你两个有序整数数组nums1
和nums2
,请你将nums2
合并到nums1
中,使nums1
成为一个有序数组。
初始化nums1
和nums2
的元素数量分别为 m 和 n 。
你可以假设nums1
的空间大小等于 m + n,这样它就有足够的空间保存来自nums2
的元素。
二、题目解析
设置两个索引i
和j
分别指向 nums1 和 nums2 的有效元素的尾部,从它们的尾部开始向前遍历。
同时设置索引cur
指向nums1
的最末尾。
在每次遍历过程中,比较i
和j
指向的元素值大小,把大的元素填充到cur
的位置,填充完毕说明那个元素已经放置在它应该放置的位置,不需要在管它了,把cur
向前移动,同时把i
或者j
向前移动。
继续比较i
和j
指向的元素值大小,把大的元素填充到cur
的位置。
三、参考代码
classSolution{
publicvoidmerge(int[]nums1,intm,int[]nums2,intn){
//索引从有序数组nums1有效元素的末端开始
//数组的下标索引从零开始计数
//索引012
//数组[1,2,3]
inti=m-1;
//索引从有序数组nums2的末端开始
intj=n-1;
//从有序数组nums1最末端的位置开始保存元素
intcur=nums1.length-1;
//通过循环把num2的元素都移动到num1中
while(j>=0){
//比较num1和num2中当前的元素大小
//如果num1中的索引位置为i的元素大于num2中索引位置为j的元素
//为了防止越界i必须是大于等于0
if(i>=0&&nums1[i]>nums2[j]){
//把num1中的索引位置为i的元素复制到索引为cur的位置
//此时cur的元素已经确定下来
nums1[cur]=nums1[i];
//接下来去确定cur前面一个元素应该放什么数字
cur--;
//此时,索引i需要向前移动
i--;
//否则,如果num1中的索引位置为i的元素小于或者等于num2中索引位置为j的元素
}else{
//把num2中的索引位置为j的元素复制到索引为cur的位置
nums1[cur]=nums2[j];
//接下来去确定cur前面一个元素应该放什么数字
cur--;
//此时,索引j需要向前移动
j--;
}
}
}
}
审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:LeetCode 26:删除有序数组中的重复项
文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。
相关推荐
指针数组和二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
发表于 11-24 11:12
•141次阅读
C语言数组应用计算机导论A第6讲:数组
发表于 11-20 15:33
•0次下载
多场景有序充电作为一项创新的威廉希尔官方网站
和管理模式,为公交绿色低碳转型提供了有力支持。在未来的发展中,需要加强威廉希尔官方网站
创新、标准制定、资金投入和安全管理等方面的工作,推动多场景有序充电威廉希尔官方网站
的广泛应
发表于 10-30 08:55
•193次阅读
在LabVIEW中,将字符串数组转换为数值数组是一项常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW
发表于 09-04 17:47
•2260次阅读
在Ubuntu系统中,删除的文件可以通过多种方法进行恢复。本文将详细介绍Ubuntu系统中删除文件的恢复方法,包括使用命令行工具、文件恢复软件以及预防文件丢失的策略。本文将分为以下几个
发表于 08-30 15:10
•1395次阅读
HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value。
发表于 07-10 16:31
•441次阅读
服务器存储数据恢复环境:
某品牌FlexStorage P5730服务器存储,存储中有一组由24块硬盘组建的RAID5阵列,包括1块热备硬盘。
服务器存储故障:
存储中的2个卷被删除,删除之后重建了一个新卷。需要恢复之
发表于 06-05 11:03
•647次阅读
C语言零长度数组,听起来可能有点奇怪,因为它没有分配内存空间,无法存储数据。但实际上,零长度数组在Linux内核中随处可见。 零长度数组的定义 首先,我们要明白什么是零长度
发表于 05-11 08:49
•924次阅读
时序数据库是一种在处理时间序列数据方面具有高效和专门化能力的数据库。它主要用于存储和处理时间序列数据,比如传感器数据、监控数据、物联网数据和日志数据等。 时序数据库的特点包括: 1. 高性能:可以
发表于 04-26 16:02
•633次阅读
HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value。
发表于 04-25 22:12
•855次阅读
如果 CHAR 类型数组的所有数组元素都拥有相同的字符串,则不必单独初始化每个数组元素。忽略右侧的数组下标。(对于一维数组下标,不写下标。)
发表于 04-18 10:37
•1230次阅读
如果想从一个关联数组中随机选取一个元素,需要逐个访问它之前的元素,原因是没办法能够直接访问到第N个元素。上面的程序示范了如何从一个以整数值作为索引**的关联数组中随机选取一个元素。
发表于 03-21 10:11
•982次阅读
数组和链表在内存中的区别 数组和链表的优缺点 数组和链表是常见的数据结构,用于组织和存储数据。它们在内存中的存储方式以及优缺点方面存在一些
发表于 02-21 11:30
•1023次阅读
如何创建数组、添加/删除元素、访问数组元素、遍历数组以及使用数组方法和函数等等。 首先,我们来看一下如何创建一个
发表于 01-12 15:11
•540次阅读
要查找LabVIEW中数组中相同元素的个数,可以使用以下步骤: 创建一个包含要查找的数值的数组。这可以通过手动输入数组元素或从文件/其他数据
发表于 12-28 16:42
•3489次阅读
评论