news 2026/4/16 11:01:09

删除有序数组中的重复项(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/16 10:44:58

Flutter Android APK 命名终极教程

一、前提说明(Flutter 项目通用)1.1 APK 默认生成位置与名称执行:flutter build apk --debugflutter build apk --release最终会在:build/app/outputs/flutter-apk/看到:app-debug.apkapp-release.apk1.2 Flutter 版本…

作者头像 李华
网站建设 2026/4/15 1:39:01

PSP金手指整合版

一共3版本:1、PSP实体机金手指插件金手指文件,同时兼容PSP PSV肾上腺。2、PPSPP安卓版整合金手指3、PPSPP电脑版整合金手指因为PSP实体机,1000系列内存只有32M 2000 3000 GO系列是64M所以不要用PPSPP模拟器版本,会卡死&#xff0c…

作者头像 李华
网站建设 2026/4/13 0:02:20

玩转 Flutter 自定义 Painter:从零打造丝滑的仪表盘动效与可视化图表

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。 在 Flutter 开发中,原生组件往往难以满足个性化的视觉需求 —— 比如电商 APP 的销量仪表盘、金融 APP 的收益走势图、健身 APP 的运…

作者头像 李华
网站建设 2026/4/14 8:54:44

FP8入门指南:零基础用快马体验AI高效计算

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 为初学者设计一个FP8学习项目,包含:1. FP8基本概念解释(交互式笔记);2. 简单的FP8矩阵计算示例;3. 可视化FP8…

作者头像 李华
网站建设 2026/3/14 19:23:13

MinIO隐性成本:企业禁用的经济账

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发MinIO总拥有成本计算器,要求:1. 支持输入节点规模、数据量等参数 2. 计算3年期的硬件/人力/带宽成本 3. 与阿里云OSS等方案进行成本对比 4. 生成成本效益…

作者头像 李华