news 2026/6/19 17:25:11

删除有序数组中的重复项(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/18 6:12:44

三步搞定虚拟手柄:终极游戏控制器模拟解决方案

三步搞定虚拟手柄:终极游戏控制器模拟解决方案 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 还在为游戏手柄兼容性问题烦恼吗?想要在PC上畅玩PS4独占游戏,却苦于控制器不匹配?今天&…

作者头像 李华
网站建设 2026/6/19 16:12:47

SmoothDiscreteMarchingCubes 多边形网格数据的平滑

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

作者头像 李华
网站建设 2026/6/19 13:34:26

【KMP算法】KMP算法揭秘:高效字符串匹配的艺术

系列文章目录 文章目录系列文章目录一、KMP算法简介(1)KMP算法的核心思想(2)KMP算法的步骤(3)KMP 算法的应用场景二、例题一、找出字符串中第一个匹配项的下标二、最短回文串三、总结一、KMP算法简介 KMP&…

作者头像 李华
网站建设 2026/6/14 10:33:49

YOLOv11 改进 - C2PSA | C2PSA融合DML动态混合层(Dynamic Mixing Layer)轻量级设计优化局部细节捕获与通道适应性,提升超分辨率重建质量

前言 本文介绍了动态混合层(DML),并将相关改进模块集成进YOLOv11。DML是SRConvNet核心组件,用于解决轻量级图像超分辨率任务中特征捕捉和通道适应性问题。它通过通道扩展拆分、多尺度动态深度卷积、通道洗牌与融合等步骤,实现多尺度局部信息聚合和通道自适应增强。DML的动…

作者头像 李华
网站建设 2026/6/12 7:16:05

【区块链技术(06)】为什么分布式系统会存在数据一致性问题?本文带你理解:CAP和FLP定理、拜占庭将军问题;Paxos和Raft两种分布式算法

分布式系统一致性 一致性问题 在分布式环境中,由于各个节点之间的通信存在延迟和不确定性,如何保证数据的一致性称为一个挑战 一致性是指分布式系统中所有节点对于某个操作或数据状态达成的共识。 当多个节点参与某个操作时,它们需要遵循…

作者头像 李华