news 2026/6/15 13:49:25

删除有序数组中的重复项(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/6/15 0:17:11

downkyi下载优先级终极指南:让你的重要视频先人一步

你是否曾经遇到过这样的烦恼:急需观看的学习视频排在下载队列末尾,而不太重要的娱乐内容却占据了宝贵的下载带宽?downkyi的智能优先级系统正是为了解决这一痛点而设计,让你能够完全掌控视频下载的执行顺序。 【免费下载链接】down…

作者头像 李华
网站建设 2026/6/15 9:48:40

中望CAD2025:将多段线转换为样条曲线

方法一: 双击多段线或者输入命令【pedit】,在弹出的菜单栏中选择【样条曲线(S)】,将普通多段线转换为样条曲线拟合的多段线;方法二: 编辑多段线——样条曲线

作者头像 李华
网站建设 2026/6/15 9:49:21

AI如何帮你解决MySQL的--skip-grant-tables问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个AI辅助工具,能够自动检测MySQL服务器是否以--skip-grant-tables选项运行。当检测到该模式时,工具应提供以下功能:1) 解释此模式的安全风…

作者头像 李华
网站建设 2026/6/15 9:49:22

Spring IOC vs 传统开发:实测效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成对比代码:1. 传统方式:手动创建A、B、C三个相互依赖的类实例;2. Spring IOC方式:配置相同的依赖关系。要求:1. 展示…

作者头像 李华
网站建设 2026/6/14 5:37:21

吃透 Flutter 路由:从基础跳转到底部导航 + 页面转场动画的全场景实战

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。路由在 Flutter 中扮演着应用导航系统的核心角色,它如同人体的骨架一般支撑起整个应用的页面结构。一个设计良好的路由系统能够&#…

作者头像 李华