Java每日一题———删除有序数组中的重复项

news2024/9/27 17:32:45

这个问题可以通过使用双指针技术来解决。我们可以使用两个指针,一个慢指针 slowRunner 用于跟踪新数组的末尾,另一个快指针 fastRunner 用于遍历数组。每当 fastRunner 遇到一个新的唯一元素时,就将其复制到 slowRunner 指向的位置,并将 slowRunner 向前移动一位。
下面是具体的实现代码:

public class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) return 0;
        
        int slowRunner = 0;
        for (int fastRunner = 1; fastRunner < nums.length; fastRunner++) {
            // 如果当前元素与前一个元素不同,则将其复制到 slowRunner 指向的位置
            if (nums[fastRunner] != nums[slowRunner]) {
                slowRunner++;
                nums[slowRunner] = nums[fastRunner];
            }
        }
        
        // 返回唯一元素的数量
        return slowRunner + 1;
    }
}

解释

  1. 初始化:设置 slowRunner 和 fastRunner 初始值分别为 0 和 1。同时检查数组是否为空。
  2. 遍历数组:使用 fastRunner 来遍历数组,从第二个元素开始。
  3. 比较并移动:如果 fastRunner 当前指向的元素与 slowRunner 指向的元素不同,则将 fastRunner 的元素复制到 slowRunner 后面,并将 slowRunner 向前移动一位。
  4. 返回结果:当 fastRunner 遍历完整个数组后,slowRunner + 1 就是唯一元素的数量。

这种方法的时间复杂度为 O(n),其中 n 是数组的长度,因为每个元素只被访问一次。空间复杂度为 O(1),因为我们是在原数组上操作,没有使用额外的空间。

这种方法保证了元素的相对顺序保持一致,并且只保留了唯一的元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建谷歌外链的常见错误及避免方法!

创建谷歌外链是个技术活&#xff0c;很多人在这个过程中容易犯错。了解这些常见错误和如何避免它们可以帮助你更有效地提升你的SEO表现。 其一&#xff0c;忽视锚文本多样性。有些人在建立外链时&#xff0c;总是使用相同的锚文本&#xff0c;这看起来很不自然&#xff0c;可能…

基于python爬虫技术的bilibili网用户数据采集系统的设计与实现-计算机毕业设计源码55962

摘要 在当今信息爆炸的时代&#xff0c;互联网已经成为人们获取信息、交流思想的重要平台。作为国内领先的弹幕视频网站&#xff0c;Bilibili凭借其独特的弹幕文化和丰富的内容生态&#xff0c;吸引了亿万用户的关注。这些用户生成的海量数据蕴含着丰富的信息&#xff0c;对于理…

异常(Java)

目录 1. 异常的概念 2. 异常的分类 3. 异常的处理 4. 异常的抛出 5. 异常的捕获 5.1 异常声明throws 5.2 try-catch捕获并处理 5.3 finally 6. 异常的处理流程 7. 自定义异常类 1. 异常的概念 异常就是在程序执行过程中发生的不正常的行为.异常中断了正在执行程序的…

Cross-Modality Person Re-identification with Memory-Based Contrastive Embedding

文章目录 题目&#xff1a;Cross-Modality Person Re-identification with Memory-Based Contrastive Embedding&#xff08;基于记忆对比嵌入的跨模态人物再识别&#xff09;摘要论文分析网络框架1、Problem Definition&#xff08;模态预处理&#xff09;2、Learning Modalit…

RUM技术探索:前端监控数据采集与实践

​​随着互联网技术的不断演进&#xff0c;Web应用程序正日益呈现出复杂多变与高度动态性的特征。用户渴望获得快速的页面加载、流畅的交互体验以及高度的可靠性。为了满足这些&#xff0c;实时监控 Web 应用的性能和行为变得至关重要。前端监控让开发者能够深入了解应用的表现…

Hack The Box-Resource

总体思路 phar反序列化->SSH CA私钥泄露->SSH CA私钥滥用->SSH脚本滥用 信息收集&端口利用 nmap -sSVC itrc.ssg.htb目标开放了两个ssh端口和一个80端口&#xff0c;先查看80端口 网站是一个SSG IT资源中心&#xff0c;主要用于解决网站问题、管理 SSH 访问、清…

免费【2024】springboot 付费自习室管理系统的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

正点原子imx6ull-mini-Linux驱动之Linux 音频驱动实验

虽然mini板子没有这个资源&#xff0c;但是可以学学移植这个软件。 音频是我们最常用到的功能&#xff0c;音频也是 linux 和安卓的重点应用场合。I.MX6ULL 带有 SAI 接口&#xff0c;正点原子的 I.MX6ULL ALPHA 开发板通过此接口外接了一个 WM8960 音频 DAC 芯片&#xff0c;…

《程序猿入职必会(10) · SpringBoot3 整合 MyBatis-Plus》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

使用samba在ubuntu和windows之间共享文件

1、在ubuntu上安装samba 在终端输入命令 sudo apt update sudo apt install samba 2、配置samba 打开samba 的配置文件 sudo nano /etc/samba/smb.conf 在文件末尾添加以下内容 [shared] path /home/lzx available yes valid users lzx read only no browsable yes…

【Redis进阶】Redis的持久化RDB和AOF

目录 持久化 RDB持久化 概念 原理 RDB 持久化的详细工作流程 1触发持久化&#xff1a; 2创建子进程&#xff1a; 3数据写入 RDB 文件&#xff1a; 4替换旧文件&#xff1a; 5回收子进程&#xff1a; RDB持久化的触发方式 1.手动触发&#xff1a; 2.自动触发&#…

鸿蒙应用服务开发【获取天气数据】

获取天气数据 介绍 Weather Service Kit&#xff08;天气服务&#xff09;是鸿蒙生态下的一个数据提供服务&#xff0c; Weather Service Kit融合了多家气象行业TOPs供应商&#xff0c;提供专业、精准、稳定的超本地化天气数据服务&#xff0c; 开发者可以通过Weather Servic…

Tomcat 漏洞

1.CVE-2017-12615 抓包&#xff0c;将get改为put jsp文件后加/ 访问木马使用蚁剑连接 2.弱口令 点击后输入默认用户名、密码&#xff1a;tomcat/tomcat 登录成功&#xff0c;在文件上传位置上传war包 使用哥斯拉生成一个jsp木马&#xff0c;打包&#xff0c;改后缀为war,上传…

如何有效防御短信接口遭受恶意攻击?

短信接口若遭遇恶意攻击&#xff0c;不仅加剧企业运营成本&#xff0c;更将严重损害企业形象。为有效预防此类风险&#xff0c;以下策略值得采纳&#xff1a; 1.设定合理的发送间隔&#xff1a;针对同一手机号码&#xff0c;设定合理的重复发送短信时间间隔&#xff0c;建议范…

Unity动态修改按钮点击效果

动态修改按钮色块&#xff0c;达到保留选中效果。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class Demo: MonoBehaviour {private Button _frontBtn;private Button _backBtn;public ColorBlock NormalC…

【React】深入解析ref的使用与潜在问题

文章目录 一、ref的基本用法二、常见错误解析三、实例解析四、错误分析与解决五、注意事项六、总结 在React开发中&#xff0c;ref常用于访问DOM元素或组件实例。正确使用ref可以极大地提升用户体验&#xff0c;特别是在需要与DOM交互的场景中。然而&#xff0c;错误或不当的re…

奥运会Ⅷ--生成式人工智能的力量倍增器

生成式人工智能在商业领域的崭新时代 随着 OpenAI 的ChatGPT、Anthropic 的Claude和 Google 的Bard的推出&#xff0c;大规模文本分析和自然语言处理 (NLP) 的长期梦想瞬间成为现实。AI 不仅令人信服地通过了图灵测试&#xff0c;还催化了企业战略的范式转变。突然之间&#x…

8.5 day bug

bug1 没有适当的引号&#xff0c;引言就不是真正的引言 问了通义&#xff0c;原来用引言需要使用单引号括起来 bug2 没理解题意&#xff0c;挺好一网站可惜是英文的&#xff0c;顺便帮翻译还没反馈渠道帮… 问了通义&#xff0c;原来是要改变continueLoop的值 bug3 好家伙&a…

ts-node报错ERR_UNKNOWN_FILE_EXTENSION

问题 有个monorepo项目&#xff0c;在最外层一次性打包 3 个项目的脚本已经成功实现&#xff0c;如下&#xff1a; "build:test": "cross-env NODE_ENVtest vite build --mode test && esno ./build/script/postBuild.ts", "build:prod"…