news 2026/8/7 19:08:15

删除有序数组中的重复项(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/8/5 8:46:43

Windows右键菜单终极优化指南:让你的右键菜单重获新生

Windows右键菜单终极优化指南:让你的右键菜单重获新生 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你的Windows右键菜单因为安装了太多软件而变…

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

ZTools v1.1.2:桌面应用启动器与搜索工具

ZTools v1.1.2作为一款跨平台的应用快速启动与搜索工具,正受到越来越多用户的青睐。这款工具不仅支持macOS和Windows系统,还集成了剪贴板管理、主题定制和插件扩展等实用功能,为用户提供全方位的桌面操作效率解决方案。核心特性详解ZTools以高…

作者头像 李华
网站建设 2026/8/7 2:24:08

Flutter Android APK 重命名 签名验证操作

一、Flutter 打包 flutter build apk --release二、生成 release 签名文件:autoclick-key.jks⚠️ 此步骤只需要做 一次。已经有 autoclick-key.jks 的话,可以直接跳到后面的签名配置。2.1 生成 keystore 的命令在项目根目录执行(确保 androi…

作者头像 李华
网站建设 2026/8/7 19:47:41

MarchingCubes 网格数据体素化并提取等值面

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①MarchingCubes提取等值面的机理&#xff…

作者头像 李华
网站建设 2026/8/7 19:40:51

禁用MinIO后的7种企业级替代方案评测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建存储方案决策助手,功能:1. 通过问卷收集企业存储需求 2. 基于机器学习推荐最适合的存储方案 3. 提供详细对比参数表 4. 生成迁移路线图。包含性能测试模…

作者头像 李华