当前位置: 首页 > news >正文

(力扣)80. 删除有序数组中的重复项 II

class Solution {
public:int removeDuplicates(vector<int>& nums) {if(nums.size()<=2){return nums.size();}int slow=2,fast = 2;while(fast<nums.size()){if(nums[fast]==nums[slow-2]){fast++;}else{nums[slow]=nums[fast];slow++;fast++;}}return slow;}
};

本题o(1)是典型的双指针问题。如果是其他的去重也有很多办法比如集合(set),hash计算每种的个数并且重新生成一个符合规定的数组。
其中双指针我认为是比较高效的一种。

slow指针指向已经保存好的数组的下一个位置,也就是下一个合法元素正确的位置。

fast指向待检查元素。 因此slow和fast都初始化为2。是因为前两个不用检查,如果不同那么就都是合法的,如果相同也是合法的。

当nums[fast] == nums[low-2]时,也就是fast此时的元素不用移动fast++

当不等时,也就是有合法元素,插入到slow位置,并且slow和fast都++。 最终slow的大小就是合法数组的大小

当双指针问题的时候我们采用while循环是更好的

http://www.xdnf.cn/news/906355.html

相关文章:

  • Seed1.5-VL登顶,国产闭源模型弯道超车丨多模态模型5月最新榜单揭晓
  • 计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点可视化分析
  • C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
  • java复习 03
  • css元素的after制作斜向的删除线
  • 【Go面试陷阱】对未初始化的chan进行读写为何会卡死?
  • Jenkins 工作流程
  • NoSQL之redis哨兵
  • 《SQL基础教程》第五章 SQL进阶之路:掌握高级查询的核心技巧
  • 2.1 Windows编译环境介绍
  • Caliper 配置文件解析:config.yaml
  • 加密货币钱包开发指南:多链资产管理与非托管安全范式
  • 关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
  • Appium+python自动化(十一)- 元素定位- 下
  • 串:探索 KMP 算法的高效模式匹配之旅
  • Nestjs框架: nestjs-schedule模块注册流程,源码解析与定时备份数据库
  • 【通义万相 Wan2.1】在并行智算云上的部署教程
  • 跨分割信号的回流路径处理
  • 毫米波雷达基础理论(3D+4D)
  • 【Servo】信号激励;激励数据、采集数据、跟踪数据
  • 我爱学算法之—— 前缀和(中)
  • 进程的详解,命令行参数,程序的地址空间(Linux)
  • 学习日记-day23-6.6
  • C++11异常特性
  • 如何计算光伏工程造价预算表?
  • YUM仓库编译出现`conflicting requests`问题解决方案
  • [Java恶补day17] 41. 缺失的第一个正数
  • AirSim/Cosys-AirSim 游戏开发(三)打包可执行文件
  • spring获取注册的bean并注册到自定义工厂中管理
  • 【大模型】大模型数据训练格式