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

    浏览量

    8372
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595

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

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

收藏 人收藏

    评论

    相关推荐

    PHP中数组的使用方法!

    如何创建数组、添加/删除元素、访问数组元素、遍历数组以及使用数组方法和函数等等。 首先,我们来看一下如何创建一个
    的头像 发表于 01-12 15:11 167次阅读

    数据结构:删除有序链表的重复节点

    给定一个有序单链表(从小到大有序)的头结点head(该结点有值),删除链表中的重复元素,使链表中的所有元素都只出现一次。如当输入 {1,1,2} 时,经
    的头像 发表于 12-05 15:46 335次阅读
    数据结构:<b class='flag-5'>删除</b><b class='flag-5'>有序</b>链表的<b class='flag-5'>重复</b>节点

    c语言中数组怎么定义

    C语言中,数组是一种用来存储相同类型元素的数据结构。它可以存储多个元素,并通过一个共同的名称来引用这些元素。数组是一种很重要的数据结构,可以用于解决很多实际的问题。 在C语言中,定义数组的语法如下
    的头像 发表于 11-24 10:11 1113次阅读

    将一维数组转为二维python

    将一维数组转为二维数组是一个常见的问题,特别是在处理数据时。一维数组是由一个连续的数据块组成,而二维数组则是由多个一维数组组成的
    的头像 发表于 11-23 14:54 2261次阅读

    java的util包下有哪些类

    地插入、删除和访问元素。 HashSet:无序的集合,不允许重复元素。 LinkedHashSet:有序的集合,不允许重复元素。 TreeSet:
    的头像 发表于 11-22 15:04 563次阅读

    python列表和数组的区别

    ,从内部实现、性能、操作方式等多个方面进行详细分析,以帮助读者更好地理解它们之间的区别和适用场景。 一、内部实现: 列表(List): Python中的列表是一种有序的、可变的、可包含不同类型元素的数据结构。列表的实现基于动态数组,可以动态分配
    的头像 发表于 11-21 15:13 871次阅读

    什么是数组数组有什么用?数组的使用方法

    数组(Array)是有序的元素序列。
    的头像 发表于 11-08 14:58 708次阅读
    什么是<b class='flag-5'>数组</b>?<b class='flag-5'>数组</b>有什么用?<b class='flag-5'>数组</b>的使用方法

    数组的定义 什么是数组

    数组 数组是内置类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。 在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。
    的头像 发表于 10-09 09:39 1349次阅读

    重复数据删除解决方案

    电子发烧友网站提供《重复数据删除解决方案.pdf》资料免费下载
    发表于 09-13 11:42 0次下载
    <b class='flag-5'>重复</b>数据<b class='flag-5'>删除</b>解决方案

    C++数组名和数组拷贝详解

    C++数组间赋值不能直接通过数组名称 randy = sesame进行,因为数组名并不是指针,大部分情况下,编译器会隐式转换为指向数组首元素的指针常量。
    发表于 08-21 15:09 300次阅读
    C++<b class='flag-5'>数组</b>名和<b class='flag-5'>数组</b>拷贝详解

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制ForEach循环渲染

    () }) } ) 如果没有提供ID函数,则框架会尝试在更新ForEach时智能检测数组更改。但是,它可能会删除子组件,并为在数组中移动(索引被更改)的
    发表于 08-18 10:50

    C语言中指针数组数组指针的区别

    指针和数组之间存在着紧密的关系。在本文中,我们将探讨指针和数组的关系、指针算术和数组遍历、多维数组与指针以及指针数组
    发表于 08-17 15:29 280次阅读

    Numpy基础之数组过滤功能介绍

    在numpy中,数组可以看作是一系列数值的有序集合,可以通过下标访问其中的元素。 处理数组的过程中,经常需要用到数组过滤功能。
    的头像 发表于 08-09 16:28 317次阅读

    LabVIEW中集合的相关知识

    在LabVIEW中,集合中的元素可以是任意基本数据类型(如数值、字符串、数组、簇等),LabVIEW中的集合是将相同类型的唯一有序数据元素归为一个集合。
    发表于 07-07 10:16 1294次阅读
    LabVIEW中集合的相关知识

    C 语言数组的基本结构

    的元素 求数组中元素的最短距离 求两个有序数组的共同元素 求三个数组的共同元素 找出数组中唯一的重复元素 找出出现奇数次的元素 求
    的头像 发表于 06-22 10:56 386次阅读