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

    浏览量

    8419
  • 数组
    +关注

    关注

    1

    文章

    414

    浏览量

    25905

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

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

收藏 人收藏

    评论

    相关推荐

    labview字符串数组转化为数值数组

    在LabVIEW,将字符串数组转换为数值数组是一常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW
    的头像 发表于 09-04 17:47 1733次阅读

    服务器数据恢复—存储卷被删除后重建如何恢复被删除卷的数据?

    服务器存储数据恢复环境: 某品牌FlexStorage P5730服务器存储,存储中有一组由24块硬盘组建的RAID5阵列,包括1块热备硬盘。 服务器存储故障: 存储的2个卷被删除删除之后重建了一个新卷。需要恢复之
    的头像 发表于 06-05 11:03 596次阅读

    嵌入式零长度数组基本操作方法

    C语言零长度数组,听起来可能有点奇怪,因为它没有分配内存空间,无法存储数据。但实际上,零长度数组在Linux内核随处可见。 零长度数组的定义 首先,我们要明白什么是零长度
    的头像 发表于 05-11 08:49 849次阅读
    嵌入式<b class='flag-5'>中</b>零长度<b class='flag-5'>数组</b>基本操作方法

    深入探索KUKA KRL数组应用

    如果 CHAR 类型数组的所有数组元素都拥有相同的字符串,则不必单独初始化每个数组元素。忽略右侧的数组下标。(对于一维数组下标,不写下标。)
    的头像 发表于 04-18 10:37 1120次阅读
    深入探索KUKA KRL<b class='flag-5'>中</b>的<b class='flag-5'>数组</b>应用

    随机抽取SV数组的一个元素方法实现

    如果想从一个关联数组随机选取一个元素,需要逐个访问它之前的元素,原因是没办法能够直接访问到第N个元素。上面的程序示范了如何从一个以整数值作为索引**的关联数组随机选取一个元素。
    的头像 发表于 03-21 10:11 856次阅读
    随机抽取SV<b class='flag-5'>数组</b><b class='flag-5'>中</b>的一个元素方法实现

    数组和链表在内存的区别 数组和链表的优缺点

    数组和链表在内存的区别 数组和链表的优缺点  数组和链表是常见的数据结构,用于组织和存储数据。它们在内存的存储方式以及优缺点方面存在一些
    的头像 发表于 02-21 11:30 890次阅读

    PHP数组的使用方法!

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

    labview怎么查数组相同元素的个数

    要查找LabVIEW数组相同元素的个数,可以使用以下步骤: 创建一个包含要查找的数值的数组。这可以通过手动输入数组元素或从文件/其他数据
    的头像 发表于 12-28 16:42 3192次阅读

    无法在层堆栈删除层的的解决方案

    问题:用户无法在Layer Stack Manager删除层,该选项变为灰色。
    的头像 发表于 12-15 17:13 1738次阅读

    数组与指针不能混用的情况

    和指针的基本概念。数组是一组相同类型的元素的集合,而指针是一个变量,它存储了一个地址,该地址指向内存的某个位置。在 C/C++ 数组名称可以当作指向
    的头像 发表于 12-07 13:46 568次阅读

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

    给定一个有序单链表(从小到大有序)的头结点head(该结点有值),删除链表重复元素,使链表
    的头像 发表于 12-05 15:46 861次阅读
    数据结构:<b class='flag-5'>删除</b><b class='flag-5'>有序</b>链表的<b class='flag-5'>重复</b>节点

    js判断是否在数组存在

    JavaScript 是一种用于客户端和服务器端编程的脚本语言。它提供了许多内置函数和方法,以便进行数组操作。 在本文中,我们将学习如何使用 JavaScript 来判断一个元素是否存在于数组
    的头像 发表于 11-30 16:23 1097次阅读

    js如何判断数组包含某个特定的值

    在JavaScript,我们可以通过多种方法来判断一个数组是否包含某个特定的值。以下是一些常用的方法: 使用indexOf()方法:indexOf()方法可以返回指定元素在数组
    的头像 发表于 11-30 16:21 1674次阅读

    C语言中数组的用法

    C语言的数组是一种数据结构,它可以存储多个相同类型的数据,例如整数,字符,浮点数等。数组的每个元素都有一个索引,用来表示它在数组的位置。数组
    的头像 发表于 11-24 17:48 1239次阅读
    C语言中<b class='flag-5'>数组</b>的用法

    c语言中数组怎么定义

    : [ ]; 其中, :数组中元素的数据类型,可以是C语言支持的任何数据类型,例如整型、字符型、浮点型等。 :数组的名称,用于引用数组的元素。 :
    的头像 发表于 11-24 10:11 2902次阅读