LeetCode第26题,删除排序数组中的重复项

2023-11-16

LeetCode 高频题 数组篇

26.删除排序数组中的重复项

大家好,我是Panda

今天分享的是LeetCode第26题,删除排序数组中的重复项。

力扣题目链接:LeetCode.26

题目描述:

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例 1:
输入:nums = [1,1,2]
输出:2, nums = [1,2,_]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:
输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

解法:双指针

首先注意数组是有序的,那么重复的元素一定会相邻。

题目中要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。

可以利⽤快慢指针,p 指针从 0 开始,q 指针从 1 开始,如果 p 和 q 所指数字相等,就⼀直后移 q 。如果不相等,p

指针后移⼀位⽤来保存当前 q 所指的值,然后继续回到 q 的后移中去。

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums == null || nums.length == 0) return 0;
        int p = 0, q = 1;
        while (q < nums.length) {
            if (nums[p] != nums[q]) {
                nums[p + 1] = nums[q];
                p++;
            }
            q++;
        } 
        return p + 1;
    }
}

复杂度分析:

时间复杂度:O(n),其中 n 是数组的长度。快指针和慢指针最多各移动 n 次。
空间复杂度:O(1)。只需要使用常数的额外空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode第26题,删除排序数组中的重复项 的相关文章

随机推荐

  • Linux编程获取本机IP地址的几种方法

    在进行Linux网络编程时 经常会需要获取本机IP地址 除了常规的读取配置文件外 本文罗列几种个人所知的编程常用方法 仅供参考 如有错误请指出 方法一 使用ioctl 获取本地IP地址 Linux下可以使用ioctl 函数以及结构体 str
  • json 插入数据_MongoDB如何一次插入多条json数据

    背景 MongoDB 是一个基于分布式文件存储的数据库 由 C 语言编写 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB 是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库当中功能最丰富 最像关系数据库的
  • PCL RANSAC拟合空间3D椭圆

    目录 一 算法原理 1 空间椭圆 2 模型系数 3 参考文献 二 代码实现 三 结果展示 四 测试数据 一 算法原理 1 空间椭圆 椭圆的参数方程为 x t
  • 阿里云轻量服务器使用教程_3分钟建站

    阿里云轻量应用服务器怎么使用 阿里云轻量应用服务器使用教程 轻量应用服务器购买 重置密码 远程连接 宝塔面板的Web环境搭建 WordPress网站程序安装到网站上线 阿里云服务器网分享轻量应用服务器从购买 配置建站环境 轻量服务器应用服务
  • JS中的常用事件及事件注册的两种方式

  • Caused by java lang NoClassDefFoundError org/springframewo

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 1 错误描述 严重 A child container
  • LNMP环境的搭建及PHP网页的发布

    目录 一 安装nginx服务 1 检查网络环境 查看服务器是否可以上网 2 Centos 7 配置阿里云 yum源和安装 EPEL源 1 对默认原文件进行备份 2 配置阿里云yum源 3 安装 EPEL源 4 安装nginx 二 安装my
  • 深度学习图像搜索与识别

    github 搜索 image retrieval 算法大合集 GitHub willard yuan awesome cbir papers Awesome and classical image retrieval papers 模型比
  • 聊一聊基础的CPU寄存器~

    寄存器 CPU内部的存储单元 用于存放从内存读取而来的数据 包括指令 和CPU运算的中间结果 使用寄存器来临时存放数据而不直接操作内存原因如下 CPU的工作原理决定了有些操作只能在CPU内部进行 CPU读写寄存器的速度比读写内存的速度要快很
  • 前端开发实习总结参考范文(合集)

    前端开发实习总结篇一 今天就简单聊聊上面的Struts Spring Hibernate吧 Struts 代表 表示层 Spring代表 业务逻辑层 Hibernate则代表持久层 他们是目前在Java Web编程开发中用得最多的框架 其实
  • 使用hutool读取excel多sheet文件

    首先要使用hutool 可以加载maven
  • 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...

    华为手机的用户量在急剧增加 当然 随时而来的就是许多使用问题 用户反馈最多的就是手机运行问题 手机使用时间一长 就会卡顿 尤其是处理紧急问题时遇到手机怠工 真是没救了 手机卡顿很大程度上是内存问题 平时使用不当造成手机内垃圾信息过多 占用手
  • R语言 第四章 初级绘图(5)课后练习,保存图形,layout函数,绘制组合图形,添加图例

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 添加图例 当图形中包含的数据不止一组时 图例可以帮助你辨别出每个条形 扇形区域或折线各代表哪一类数据 此时 可以使用legend函数来在画布中添加图例 对图形进行相应说明 le
  • nginx root 和alise

    Nginx静态服务配置 详解root和alias指令 简书 jianshu com 静态文件 Nginx以其高性能著称 常用与做前端反向代理服务器 同时nginx也是一个高性能的静态文件服务器 通常都会把应用的静态文件使用nginx处理 配
  • Android下NestedScrolling机制与CoordinatorLayout之源码分析

    1 CoordinatorLayout依赖库 旧版本导入CoordinatorLayout依赖 implementation com android support design 28 0 0 升级Android X后的依赖 impleme
  • STUN和TURN技术浅析

    原文地址 http www h3c com cn MiniSite Technology Circle Net Reptile The Five Home Catalog 201206 747038 97665 0 htm 在现实Inter
  • pytorch中attention的两种实现方式

    class AttnDecoderRNN nn Module def init self hidden size output size dropout p 0 1 max length MAX LENGTH super AttnDecod
  • XMind2TestCase思维导图测试用例转Excel使用方法

    很多测试工程师习惯于用思维导图写测试用例 结构会比较清晰 但是我们通常把思维导图的用例整理至excel或者导入其他工具如禅道 testlink tapd来执行用例或存档 如果再逐条把思维导图转为excel会比较浪费时间 有没有工具可以把思维
  • 数字高程信息30m分辨率SRTM DEM数据下载与拼接(ENVI)

    数据下载 本次下载的数据是SRTMDEM数据 该数据分辨率为30m 可以到官网下载官网地址 http gdex cr usgs gov gdex 官网数据下载需要注册信息 如果部分区域可从网盘下载 网盘地址 链接 https pan bai
  • LeetCode第26题,删除排序数组中的重复项

    LeetCode 高频题 数组篇 26 删除排序数组中的重复项 大家好 我是Panda 今天分享的是LeetCode第26题 删除排序数组中的重复项 力扣题目链接 LeetCode 26 题目描述 给你一个 升序排列 的数组 nums 请你