一、题目描述
给你两个有序整数数组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浏览量
8776 -
数组
+关注
关注
1文章
420浏览量
27458
原文标题:LeetCode 26:删除有序数组中的重复项
文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
嵌入式春招笔试高频算法题(附解题思路)
,另一个指针(j)用于记录去重后数组的下标,遍历过程中,若当前元素与前一个元素不同,则保留该元素,j指针后移。
步骤拆解(适配有序数组,嵌入式笔试常考有序数组去重):
初始化j =
发表于 03-18 10:08
重复接地的作用是什么+怎么做+相关数据
重复接地,顾名思义,是指在电力系统中多次接地,以增强系统的安全性和稳定性。其作用主要体现在以下几个方面:
1.降低接地电阻:通过多次接地,可以有效地降低接地电阻,使电流更容易地流入大地,从而
C语言插入排序算法和代码
是,将元素逐个添加到已经排序好的数组中去,同时要求,插入的元素必须在正确的位置,这样原来排序好的数组是仍然有序的。
在实际使用中,通常是排序整个无
发表于 01-15 06:44
暂态事件记录的重复触发抑制是如何实现的?
暂态事件记录的重复触发抑制通过 触发抑制时间(死区时间) 、 迟滞阈值 、 事件分级独立设置 和 事件验证机制 四大核心技术实现,确保同一暂态事件不被重复记录,同时保证真实事件完整捕捉。 一、核心
线性搜索与二分搜索介绍
线性搜索(Linear Search):从数组的第一个元素开始,依次将当前元素与目标值进行比较,直到找到目标值或搜索完整个数组。
二分搜索(Binary Search):在有序数组中查
发表于 12-01 07:36
数组的初体验
程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋
发表于 11-25 08:06
二维数组介绍
] = { {1, 2,3}, {4, 5,6},{7, 8, 9}};array[1][1] = 5;
或许你以为在内存中 array 数组会像一个二维矩阵:
123456789
可实际上它是这样
发表于 11-25 07:42
通过优化代码来提高MCU运行效率
选择时间复杂度低的算法。
根据访问模式选择数据结构。频繁查找用哈希表,有序数据用二叉树等。
查表法:对于复杂的数学计算(如sin, log),或者协议解析,预先计算好结果存于数组中,用空间换时间
发表于 11-12 08:21
精密平台中重复精度的影响因素有哪些
什么是重复定位精度? 在精密运动平台中,重复定位精度(或重复性)是指运动台多次运动到同一名义位置时,与实际位置偏差的某个统计量,根据不同的测试标准会有不同的统计计算方法,例如峰谷值、2σ、3
请问有办法在嵌入式单片机上实现对片外Flash的数据增删功能吗?
客户有一个需求, 想要删除已保存的数据, 单片机使用的是STM32F407, 存储的是有序的递增数据, 删除功能我一直不知道怎么做空间回收, Flash的擦除寿命有影响吗, 单片机内存够不够, 写入
发表于 09-23 06:10
重复接地4Ω还是10Ω
在电气安全中,重复接地是降低故障电压的重要措施,其接地电阻值需根据系统类型确定。对于TN-S或TT系统,独立重复接地的电阻通常要求≤10Ω,确保故障时快速切断电源;若为高压与低压共用接地装置,则需
产品下架与删除API接口
在现代电子商务和产品管理系统中,API接口是实现高效操作的核心工具。产品下架与删除API接口允许管理员或系统通过编程方式管理产品状态,确保数据一致性和安全性。本文将逐步介绍这两个API的设计原则
高压放大器在锁相环稳定重复频率研究中的应用
实验名称: 锁相环稳定重复频率的系统分析 实验内容: 针对重复频率的漂移,引入两套锁相环系统反馈控制两个激光器的重复频率,将其锁定在同一个稳定的时钟源上。本章主要阐述了经典锁相环的原理,稳定重
LeetCode 26:删除有序数组中的重复项
评论