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

删除有序数组中的重复项(C++)

一、问题描述

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

  • 去重后,nums的前k个元素应包含排序后的唯一数字,下标k-1之后的元素可忽略。
  • 示例 1:输入nums = [1,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]

二、解题思路

1. 核心思路分析

利用数组非严格递增的特性,采用双指针法(快慢指针)原地去重:

  • 慢指针slow:指向去重后数组的最后一个有效元素
  • 快指针fast:遍历整个数组,寻找与慢指针指向元素不同的新元素;
  • nums[fast] != nums[slow]时,慢指针后移,并将快指针指向的新元素赋值给慢指针位置,实现原地更新。

2. 算法选择

双指针法是最优解法:

  • 时间复杂度:O(n)(仅遍历数组一次);
  • 空间复杂度:O(1)(仅用常数级额外空间);
  • 优势:原地操作、无额外内存开销、效率高。

三、C++ 代码实现

http://www.jsqmd.com/news/84713/

相关文章:

  • downkyi下载优先级终极指南:让你的重要视频先人一步
  • YOLOv11 改进 - C2PSA | C2PSA融合Mona多认知视觉适配器(CVPR 2025):打破全参数微调的性能枷锁:即插即用的提点神器,引领视觉微调新突破
  • 企业级部署:奇安信天擎在金融行业的实战案例
  • Windows右键菜单终极优化指南:让你的右键菜单重获新生
  • 百度网盘直链解析:新手必学的3步全速下载方法
  • 洛雪音乐PC版2.12.0| 最强电脑免费听歌软件,所有平台音乐都能听,需要导入音源
  • YOLOv11改进 - C3k2融合 | C3k2融DBlock解码器块( CVPR 2025 ) Decoder Block:解码器块,去模糊和提升图像清晰度
  • 正义荣耀圣戒 无限代金券买断
  • YOLOv11改进 - C3k2融合 | C3k2融合MambaOut(CVPR 2025),简洁高效的视觉模型基线
  • 【KMP算法】KMP算法揭秘:高效字符串匹配的艺术
  • ZTools v1.1.2:桌面应用启动器与搜索工具
  • 【Hadoop+Spark+python毕设】哮喘患者症状数据可视化分析系统、计算机毕业设计、包括数据爬取、数据分析、数据可视化、Hadoop、实战教学
  • ML-4360 3D视觉 笔记
  • 企业级Git仓库SSH连接安全最佳实践
  • 玩转 Flutter 自定义 Painter:从零打造丝滑的仪表盘动效与可视化图表
  • CSS Padding图解指南:小白也能懂的间距魔法
  • 基于SpringBoot的餐厅推荐系统 计算机毕业设计选题 计算机毕设项目 前后端分离 【源码-文档报告-代码讲解】
  • 禁用MinIO后的7种企业级替代方案评测
  • Kingbase KES常见问题排查与解决指南:从启动报错到性能优化
  • 互联网大厂Java面试:从Spring Boot到微服务架构的深度剖析
  • AI如何帮你解决MySQL的--skip-grant-tables问题
  • 中望CAD2025:将多段线转换为样条曲线
  • AI如何助力音乐制作:从WUB到专业音效
  • 零基础教程:手把手教你下载安装OpenJDK1.8
  • 智驾相关名词简介
  • KL按键映射文件修改
  • 零基础教程:5分钟学会M3U8视频下载
  • 面向对象程序设计———数字电路模拟程序1、2与第一次课堂测验总结
  • 传统统计 “手忙脚乱” VS 虎贲等考 AI “一键洞察”:数据分析的革命性分水岭
  • document.querySelector在电商网站中的5个实战应用