一、题目描述
给你两个有序整数数组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--;
}
}
}
}
审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
元素
+关注
关注
0文章
47浏览量
8372 -
数组
+关注
关注
1文章
409浏览量
25595
原文标题:LeetCode 26:删除有序数组中的重复项
文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
c语言中数组怎么定义
C语言中,数组是一种用来存储相同类型元素的数据结构。它可以存储多个元素,并通过一个共同的名称来引用这些元素。数组是一种很重要的数据结构,可以用于解决很多实际的问题。 在C语言中,定义数组的语法如下
将一维数组转为二维python
将一维数组转为二维数组是一个常见的问题,特别是在处理数据时。一维数组是由一个连续的数据块组成,而二维数组则是由多个一维数组组成的
java的util包下有哪些类
地插入、删除和访问元素。 HashSet:无序的集合,不允许重复元素。 LinkedHashSet:有序的集合,不允许重复元素。 TreeSet:有
python列表和数组的区别
,从内部实现、性能、操作方式等多个方面进行详细分析,以帮助读者更好地理解它们之间的区别和适用场景。 一、内部实现: 列表(List): Python中的列表是一种有序的、可变的、可包含不同类型元素的数据结构。列表的实现基于动态数组,可以动态分配
数组的定义 什么是数组
数组 数组是内置类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。 在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。
C++数组名和数组拷贝详解
C++数组间赋值不能直接通过数组名称 randy = sesame进行,因为数组名并不是指针,大部分情况下,编译器会隐式转换为指向数组首元素的指针常量。
发表于 08-21 15:09
•300次阅读
HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制ForEach循环渲染
() })
}
)
如果没有提供项ID函数,则框架会尝试在更新ForEach时智能检测数组更改。但是,它可能会删除子组件,并为在数组中移动(索引被更改)的
发表于 08-18 10:50
C语言中指针数组和数组指针的区别
指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组和
发表于 08-17 15:29
•280次阅读
Numpy基础之数组过滤功能介绍
在numpy中,数组可以看作是一系列数值的有序集合,可以通过下标访问其中的元素。 处理数组的过程中,经常需要用到数组过滤功能。
LabVIEW中集合的相关知识
在LabVIEW中,集合中的元素可以是任意基本数据类型(如数值、字符串、数组、簇等),LabVIEW中的集合是将相同类型的唯一有序数据元素归为一个集合。
发表于 07-07 10:16
•1294次阅读
C 语言数组的基本结构
的元素 求数组中元素的最短距离 求两个有序数组的共同元素 求三个数组的共同元素 找出数组中唯一的重复元素 找出出现奇数次的元素 求
评论