news 2026/4/17 17:34:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
删除有序数组中的重复项(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++ 代码实现

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:18:14

Windows右键菜单管理神器ContextMenuManager:一键清理优化完全指南

Windows右键菜单管理神器ContextMenuManager:一键清理优化完全指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 告别臃肿菜单,重获清爽…

作者头像 李华
网站建设 2026/4/18 8:30:36

百度网盘直链解析:新手必学的3步全速下载方法

还在为百度网盘蜗牛般的下载速度而烦恼吗?每次看到几十KB/s的龟速下载,是不是感觉回到了拨号上网的年代?今天我要介绍的这款百度网盘直链解析工具,正是你需要的提速利器!它能够巧妙绕过非会员限速,直接获取…

作者头像 李华
网站建设 2026/4/18 8:03:24

深圳/东莞/广州/惠州品牌美陈快闪店设计公司

在粤港澳大湾区的建设浪潮中,深圳、东莞、广州、惠州四座城市形成了各具特色的商业生态圈,既承载着区域经济协同发展的使命,也孕育着多元消费文化的创新实践。这片热土不仅是国内经济活力指数领先的区域,更持续带领着商业形态迭代…

作者头像 李华
网站建设 2026/4/18 5:33:10

GoView零基础教程:30分钟做出第一个数据看板

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式GoView新手教程项目。功能:1.分步引导界面(注册-创建-配置-发布)2.内置简单数据集(如月度销售数据)3.实时…

作者头像 李华
网站建设 2026/4/18 2:36:08

零基础图解教程:Windows安装JDK1.8步步详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个交互式JDK1.8安装指导工具,功能包括:1.分步骤图文指引界面 2.实时安装状态检测 3.常见问题自动诊断 4.安装后HelloWorld示例自动生成 5.学习资源推荐…

作者头像 李华