news 2026/6/13 8:20:58

删除有序数组中的重复项(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/9 6:35:23

Spring Boot 权限控制三件套:JWT 登录校验 + 拦截器 + AOP 角色注解实战

文章目录接口校验,权限拦截通过自定义注解,基于面向切面编程来实现1. 自定义异常2. 自定义注解3. AOP面向切面类4. Controller层使用统一异常处理和信息返回1. 创建统一信息返回类2. 创建全局统一异常处理类3. 创建一个枚举类型4. 创建自定义的异常类拦截…

作者头像 李华
网站建设 2026/6/12 18:06:10

Python验证码处理实战:从12306项目看验证码识别的技术演进

一、引言:验证码,网络安全的第一道防线 在网络应用中,验证码是防止自动化攻击的重要手段。12306作为中国铁路售票系统,其验证码设计尤为复杂,从早期的数字字母组合,到后来的图片点击,再到如今的…

作者头像 李华
网站建设 2026/6/10 13:53:30

【Hadoop+Spark+python毕设】哮喘患者症状数据可视化分析系统、计算机毕业设计、包括数据爬取、数据分析、数据可视化、Hadoop、实战教学

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

作者头像 李华
网站建设 2026/6/11 13:59:59

java计算机毕业设计山西工程技术学院学生党员管理系统的设计和实现 高校学生党务工作数字化平台的设计与实现 面向二级学院的学生党员信息一站式服务平台

计算机毕业设计山西工程技术学院学生党员管理系统的设计和实现m6m3l9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 在高校党建业务日益精细化的今天,传统纸质与人工…

作者头像 李华
网站建设 2026/6/12 23:13:11

【二分查找-开区间思维】

文章目录红蓝染色法1\. 核心逻辑:(-1, n)2\. 代码模板3\. 为什么很多人喜欢这种写法?(优势)4\. 劣势与注意事项开区间和闭区间的区别1\. 为什么它是“闭区间”写法?2\. 这张图在解释哪段代码?3\. 和刚才说的…

作者头像 李华
网站建设 2026/6/12 3:50:20

C 标准库 - <locale.h>

C 标准库 - <locale.h> 引言 在C语言编程中,正确处理不同语言环境下的字符编码和格式是非常重要的。《locale.h》头文件提供了C标准库中用于处理本地化(locale)的功能。本文将详细介绍《locale.h》头文件的功能、使用方法以及注意事项。 <locale.h>概述 《l…

作者头像 李华