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

    浏览量

    8410
  • 数组
    +关注

    关注

    1

    文章

    412

    浏览量

    25880

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    深入探索KUKA KRL数组应用

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

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

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

    PHP数组的使用方法!

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

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

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

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

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

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

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

    js判断是否在数组存在

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

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

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

    C语言中数组的用法

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

    c语言中数组怎么定义

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

    java的util包下有哪些类

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

    python去除list重复的数据

    Python是一个强大的编程语言,提供了许多解决问题的方法和功能。其中一个常见的问题是如何去除列表重复数据。在本文中,我们将详细介绍Python中去除列表重复数据的几种方法,包括
    的头像 发表于 11-21 15:49 1477次阅读

    python列表和数组的区别

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