8.删除有序数组中的重复项 II

文章目录

  • 题目简介
  • 题目解答
    • 解法一:双指针(快慢指针)
      • 代码:
      • 复杂度分析:
  • 题目链接

大家好,我是晓星航。今天为大家带来的是 删除有序数组中的重复项 II 相关的讲解!😀

题目简介

题目解答

解法一:双指针(快慢指针)

思路:本题要求相同元素最多出现两次而非一次,所以我们需要检查上上个应该被保留的元素 nums[slow−2]是否和当前待检查元素nums[fast] 相同。当且仅当 nums[slow−2]=nums[fast]时,当前待检查元素 nums[fast]不应该被保留(因为此时必然有nums[slow−2]=nums[slow−1]=nums[fast]。最后,slow即为处理好的数组的长度。

代码:

class Solution {public int removeDuplicates(int[] nums) {int n = nums.length;int slow = 2;int fast = 2;if (n<=2) {return n;}while (fast < n) {if(nums[slow-2] != nums[fast]) {nums[slow] = nums[fast];slow++;}fast++;}return slow;}
}

代码解析:
在这里插入图片描述
判断数组长度是否小于等于2,因为根据题意元素可以重复出现两次,因此数组长度小于等于2时,我们数组最多出现2个相同的元素,直接返回数组长度即可。
在这里插入图片描述
这里就是快慢指针判断数组元素是否会重复三次的源代码了,原理就是慢指针与快指针先全部将下标赋值为2,然后慢指针减2与快指针比较(此时就相当于第一次元素和第三个元素比较 - 注题目给的是递增有序数组),此时无非只有两种情况,间隔两个位置的元素相等或不相等。

如果不相等,我们便可以将慢指针此时指向元素的值赋值为快指针的值然后两个指针都加加。

如果相等,我们便让快指针加加,慢指针不变继续下一次循环。

直到fast快指针的长度大于等于数组长度n,循环就会跳出。

在这里插入图片描述

最后返回slow即可,这里的slow更像是一个一个元素拼接而成的新数组。

复杂度分析:

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是数组的长度。我们最多遍历该数组一次。

  • 空间复杂度:O(1)O(1)O(1)。我们只需要常数的空间存储若干变量。

题目链接

80.删除有序数组中的重复项 II

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[NSSRound#1 Basic]sql_by_sql

[NSSRound#1 Basic]sql_by_sql 这题没啥难的&#xff0c;二次注入盲注的套题 先注册&#xff0c;进去有个修改密码 可能是二次注入 修改密码处源码 <!-- update user set password%s where username%s; -->重新注册一个admin-- 获得admin身份&#xff08;原理看sqli-l…

【日常开发之FTP】Windows开启FTP、Java实现FTP文件上传下载

【日常开发之FTP】windows开启FTP、Java实现FTP文件上传下载 FTP前言FTP是什么&#xff1f;FTP两种模式 Windows开启FTPFTP windows 配置防火墙配置 Java部分Maven配置创建FTPClient 注意 FTP前言 FTP是什么&#xff1f; FTP是一个专门进行文件管理的操作服务&#xff0c;一般…

从github上复制代码,记录失败过程,最后放弃挣扎直接去github上手动下载了

从github中复制代码出现一下两种报错 1、Failed to connect to github.com port 443: 连接超时 2、Failed to connect to github.com port 443: 拒绝连接 解决办法如下&#xff1a; https://www.ipaddress.com/ github.com的IP地址为140.82.114.3 终端打开hosts文件加入140…

智慧变电站守护者:TSINGSEE青犀AI视频智能管理系统引领行业革新

一、方案概述 随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;技术已经深入到各个领域。在变电站安全监控领域&#xff0c;引入AI视频监控智能分析系统&#xff0c;可以实现对站内环境、设备状态的实时监控与智能分析&#xff0c;从而提高变电站的安全运行…

找不到msvcr120.dll无法继续执行

windows&#xff08;新安装的系统&#xff09;安装mysql&#xff0c;报错MSVCR120.dll找不到 官方下载地址 https://www.microsoft.com/zh-CN/download/details.aspx?id40784&wd&eqid9eba4d380059694e00000004658ce260 安装上就好了

Linux —— 信号初识

Linux —— 信号初识 什么是信号测试几个信号signal函数函数原型参数说明返回值注意事项示例 后台程序前台转后台检测输入中断向量表 我们今天来继续学习Linux的内容&#xff0c;今天我们要了解的是Linux操作系统中的信号&#xff1a; 什么是信号 信号是操作系统内核与进程之…

Kubernetes的基本概念

目录 一.基本内容 1.定义 2.作用 二.特性 1.弹性伸缩 2.自我修复 3.服务发现和负载均衡 4.自动发布&#xff08;默认滚动发布模式&#xff09;和回滚 5.集中化配置管理和密钥管理 6.存储编排&#xff0c;支持外挂存储并对外挂存储资源进行编排 7.任务批处理运行 三…

二、使用插件一键安装HybirdCLR

预告 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可更多地关注Unity场景内容的制作。 热更方案 基于HybirdCLR HybridCLR是一个特性完整、零成…

100G ZR4 80KM光模块产品亮点有哪些

之前的文章我们介绍了100G ZR4 80KM光模块的产品特征以及技术原理等&#xff0c;那本期文章我们来了解一下易天第二代100G ZR4 80KM光模块的产品亮点。 首先我们通过下面这张表格以最直观的方式来了解第一代和第二代100G ZR4 80KM光模块在工作温度、功耗、FEC纠错等方面有哪些…

Rust Postgres实例

Rust Postgres介绍 Rust Postgres是一个纯Rust实现的PostgreSQL客户端库&#xff0c;无需依赖任何外部二进制文件2。这意味着它可以轻松集成到你的Rust项目中&#xff0c;提供对PostgreSQL的支持。 特点 高性能&#xff1a;Rust Postgres提供了高性能的数据库交互功能&#…

从心理学角度看,GPT 对人有什么影响?

开启个性化AI体验&#xff1a;深入了解GPT的无限可能 导言 GPT 与我们日常生活的融合标志着技术进步的重大飞跃&#xff0c;为提高效率和创新提供了前所未有的机遇。然而&#xff0c;当我们与这些智能系统日益紧密地交织在一起时&#xff0c;探索它们对个人产生的细微的心理影响…

案例研究|硬之城借助DataEase以数据驱动供应链精细化管理

深圳硬之城信息技术有限公司&#xff08;以下简称为“硬之城”&#xff09;成立于2015年&#xff0c;专注电子元件供应链领域&#xff0c;定位于电子产业供应链与智造平台。硬之城通过名为“Allchips”的集成式服务平台&#xff0c;为客户提供一站式的电子元件采购和供应链管理…