0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LeetCode 26:删除有序数组中的重复项

算法与数据结构 来源:吴师兄学算法 作者:吴师兄学算法 2022-12-21 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、题目描述

给你两个有序整数数组nums1nums2,请你将nums2合并到nums1中,使nums1成为一个有序数组

初始化nums1nums2的元素数量分别为 m 和 n 。

你可以假设nums1的空间大小等于 m + n,这样它就有足够的空间保存来自nums2的元素。

二、题目解析

设置两个索引ij分别指向 nums1 和 nums2 的有效元素的尾部,从它们的尾部开始向前遍历。

同时设置索引cur指向nums1最末尾

1ef69e64-80cd-11ed-8abf-dac502259ad0.png

在每次遍历过程中,比较ij指向的元素值大小,把大的元素填充到cur的位置,填充完毕说明那个元素已经放置在它应该放置的位置,不需要在管它了,把cur向前移动,同时把i或者j向前移动。

继续比较ij指向的元素值大小,把大的元素填充到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

    浏览量

    8722
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27114

原文标题:LeetCode 26:删除有序数组中的重复项

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    线性搜索与二分搜索介绍

    线性搜索(Linear Search):从数组的第一个元素开始,依次将当前元素与目标值进行比较,直到找到目标值或搜索完整个数组。 二分搜索(Binary Search):在有序数组
    发表于 12-01 07:36

    数组的初体验

    程序也需要容器,只不过该容器有点特殊,它在程序是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋
    发表于 11-25 08:06

    通过优化代码来提高MCU运行效率

    选择时间复杂度低的算法。 根据访问模式选择数据结构。频繁查找用哈希表,有序数据用二叉树等。 查表法:对于复杂的数学计算(如sin, log),或者协议解析,预先计算好结果存于数组,用空间换时间
    发表于 11-12 08:21

    精密平台中重复精度的影响因素有哪些

    什么是重复定位精度?     在精密运动平台中,重复定位精度(或重复性)是指运动台多次运动到同一名义位置时,与实际位置偏差的某个统计量,根据不同的测试标准会有不同的统计计算方法,例如峰谷值、2σ、3
    的头像 发表于 10-15 11:24 375次阅读
    精密平台中<b class='flag-5'>重复</b>精度的影响因素有哪些

    产品下架与删除API接口

    ​ 在现代电子商务和产品管理系统,API接口是实现高效操作的核心工具。产品下架与删除API接口允许管理员或系统通过编程方式管理产品状态,确保数据一致性和安全性。本文将逐步介绍这两个API的设计原则
    的头像 发表于 07-25 14:15 340次阅读
    产品下架与<b class='flag-5'>删除</b>API接口

    高压放大器在锁相环稳定重复频率研究的应用

    实验名称: 锁相环稳定重复频率的系统分析 实验内容: 针对重复频率的漂移,引入两套锁相环系统反馈控制两个激光器的重复频率,将其锁定在同一个稳定的时钟源上。本章主要阐述了经典锁相环的原理,稳定
    的头像 发表于 06-06 18:36 501次阅读
    高压放大器在锁相环稳定<b class='flag-5'>重复</b>频率研究<b class='flag-5'>中</b>的应用

    二维数组指定条件删除指定行,请教

    数组1的第一列进行条件判断,如果小于20,删除所在行,最终需要得到数组2
    发表于 05-13 08:11

    删除工作空间中的工程项目

    首先我们先删除刚刚新建的工程模板。
    的头像 发表于 05-06 09:27 1142次阅读
    <b class='flag-5'>删除</b>工作空间中的工程项目

    redefinition of \'gImage_pic2\'

    ‌:pic2.h 被多次包含(如直接或间接包含),且未使用头文件保护(#ifndef 宏)导致变量重复定义‌57。 ‌变量定义在头文件‌:gImage_pic2 数组直接定义在 pic2.h
    发表于 04-01 11:55

    TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源

    2025 年 3 月 26 日,涛思数据通过线上直播形式正式发布了其新一代时序数据分析 AI 智能体——TDgpt,并同步开源其核心代码。这一创新功能作为 TDengine 3.3.6.0 的重要
    的头像 发表于 03-27 10:30 560次阅读
    TDengine 发布时<b class='flag-5'>序数</b>据分析 AI 智能体 TDgpt,核心代码开源

    有序充电策略控制系统在新能源充电站的应用

    。基于AcrelCloud9000充电桩方案,本研究探讨了有序充电策略的必要性、关键技术及应用场景。系统采用云端管理和智能调度策略,结合变压器负荷监测、充电桩远程控制及分时电价机制,实现充电功率动态调整,优化电力资源配置,提高充电站的运行效率和经济性。    关键词: 有序
    的头像 发表于 03-26 16:38 676次阅读
    <b class='flag-5'>有序</b>充电策略控制系统在新能源充电站<b class='flag-5'>中</b>的应用

    安科瑞EMS3.0有序充电管理解决方案破解充电桩“用电焦虑”

    有序充电 充电桩
    的头像 发表于 03-21 13:29 590次阅读
    安科瑞EMS3.0<b class='flag-5'>有序</b>充电管理解决方案破解充电桩“用电焦虑”

    请问LabView如何直接发送二维数组到DMD上显示?

    LabView如何直接发送二维数组到DMD上显示。 在LabView,调用int LoadData(UCHAR*RowData,long length)遇到两个问题,1 二维数组
    发表于 02-27 07:30

    hyper v 删除,怎么样删除hyper-v的虚拟机?

    对于任何追求卓越运营的企业而言,批量管理如同精密时钟的核心齿轮,精准地调控着各项业务的有序运转。今天小编要带来怎么样删除hyper-v的虚拟机。    要删除Hyper-V
    的头像 发表于 02-05 13:39 1506次阅读
    hyper v <b class='flag-5'>删除</b>,怎么样<b class='flag-5'>删除</b>hyper-v<b class='flag-5'>中</b>的虚拟机?

    数组的下标为什么可以是负数

    最近有同学发来这样一段代码,并提出一个问题,数组的下标为什么可以是负数?     #include int main(){ const char *s = "helloworld"; const
    的头像 发表于 12-20 11:18 851次阅读