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题,删除排序数组中的重复项 的相关文章

  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 通过 html tidy 提供渲染 jsp 页面

    我有一个在 Glassfish 上运行的 Java 项目 它会呈现一些难看的 HTML 这是使用各种内部和外部 JSP 库的副作用 我想设置某种渲染后过滤器 通过 HTMLTidy 提供最终的 HTML 这样源代码就很好且整洁 有助于调试
  • Java中的文字赋值[重复]

    这个问题在这里已经有答案了 定义上有什么区别 double example 23 1d or double example 23 1 为什么long float double可以以l f d结尾 之间没有区别double example 2
  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • 初始堆大小无效。无法创建Java虚拟机

    我遇到了下一个问题 我尝试通过startup bat手动启动Tomcat 但似乎没有显示任何结果 然后我尝试运行shutdown bat 控制台显示如下 D apache tomcat 7 0 35 bin gt startup bat U
  • 如何为java注释处理器编写自动化单元测试?

    我正在尝试使用 java 注释处理器 我可以使用 JavaCompiler 编写集成测试 事实上我现在正在使用 hickory 我可以运行编译过程并分析输出 问题 即使我的注释处理器中没有任何代码 单个测试也会运行大约半秒 对于以 TDD
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • 春季MVC。方法参数字段的默认值

    我有一个带有方法测试的简单控制器 RequestMapping produces application json ResponseBody public HttpEntity
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我
  • 如何使 JScrollPane 与嵌套 JPanel 一起正常工作?

    我正在使用 NetBeans 在 Java 中构建 Swing 应用程序 但我遇到布局问题 我的主框架包含一个JScrollPane其中包含一个JPanel called contentPanel其中又包含一个JPanel called l
  • 构造函数参数和属性一起出现在 bean 定义中

  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 如何创建具有同等时间元素的 JavaFX 转换?

    我正在尝试 JavaFX 和动画 尤其是PathTransition 我正在创建一个简单的程序 使球 弹跳 而不使用QuadCurveTo班级 到目前为止 这是我的代码 Ellipse ball new Ellipse 375 250 10
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • 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 请你