news 2026/2/1 9:29:26

C++ Vector 核心问题精讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ Vector 核心问题精讲

解题思路 由于数组是非严格递增的,重复的元素必然是相邻的。我们可以用两个指针:

  • 慢指针 prev:标记 “已处理的无重复元素” 的最后一个位置。
  • 快指针 curr:遍历数组,寻找新的、未出现过的元素。

在这里插入图片描述

结合示例 1(输入nums = [1,1,2])拆解解题过程: 步骤 1:初始化指针

  • 慢指针 prev 初始化为 0(指向数组第一个元素 1)。
  • 快指针 curr 初始化为 1(从第二个元素开始遍历)。

步骤 2:第一次循环(curr = 1) 此时 nums[curr] = 1,nums[prev] = 1,两者相等。

  • 因为元素重复,不需要更新nums,仅将 curr 后移(curr = 2)。
  • 数组状态仍为 [1, 1, 2]。

步骤 3:第二次循环(curr = 2) 此时 nums[curr] = 2,nums[prev] = 1,两者不相等。

  • 先将 prev 后移(prev = 1)。
  • 把 nums[curr] 的值(2)赋给 nums[prev],此时数组变为 [1, 2, 2]。
  • 再将 curr 后移(curr = 3),此时 curr 超出数组长度,循环结束。

步骤 4:返回结果最终 prev = 1,无重复元素的数量为 prev + 1 = 2,与示例输出一致。数组的前 2 个元素为 [1, 2],满足题目要求。

尤其注意:慢指针 prev 最终指向的是“无重复元素区域” 的最后一个元素的索引,需要返回的是无重复元素的数量

通过这样的步骤,双指针法在原地完成了重复元素的删除,同时保证了时间复杂度为O(n)、空间复杂度为 O(1),是该问题的最优解法。

二、只出现一次的数字

在这里插入图片描述

写这道题要清楚异或运算的特性: 异或运算(^)是基于二进制位的操作,规则是:对应二进制位相同则为 0,不同则为 1

代码语言:javascript

AI代码解释

3 的二进制:011(8 位表示为 00000011) 5 的二进制:101(8 位表示为 00000101) 合并结果为 00000110,即十进制的 6。所以 3 ^ 5 = 6

性质 1:相同的数异或,结果为 0。例如 2 ^ 2 = 0,5 ^ 5 = 0。 性质 2:0 和任意数异或,结果为这个数本身。例如 0 ^ 3 = 3,0 ^ 99 = 99

异或元素还满足: 交换律:a ^ b = b ^ a(异或的顺序不影响结果)。 结合律:(a ^ b) ^ c = a ^ (b ^ c)(可以任意调整异或的组合顺序)


www.dongchedi.com/article/7594176579102884414
www.dongchedi.com/article/7594177062877839897
www.dongchedi.com/article/7594174721596473881
www.dongchedi.com/article/7594175192449008153
www.dongchedi.com/article/7594173652875444760
www.dongchedi.com/article/7594172550394069566
www.dongchedi.com/article/7594172678253265470
www.dongchedi.com/article/7594171407253275198
www.dongchedi.com/article/7594169982704173593
www.dongchedi.com/article/7594171805393650201
www.dongchedi.com/article/7594171076024812094
www.dongchedi.com/article/7594169163703271998
www.dongchedi.com/article/7594155915663180313
www.dongchedi.com/article/7594152900747100734
www.dongchedi.com/article/7594151966180426264
www.dongchedi.com/article/7594148426036904473
www.dongchedi.com/article/7594143100311192088
www.dongchedi.com/article/7594143206229705278
www.dongchedi.com/article/7594143047860961817
www.dongchedi.com/article/7594143133597205054
www.dongchedi.com/article/7594143172075487806
www.dongchedi.com/article/7594143133597073982
www.dongchedi.com/article/7594142854390759961
www.dongchedi.com/article/7594111120601039384
www.dongchedi.com/article/7594111426885583384
www.dongchedi.com/article/7594112371485393470
www.dongchedi.com/article/7594109925660426776
www.dongchedi.com/article/7594108812211438104

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/31 9:41:23

Mac终极NTFS读写解决方案:Nigate工具完整指南

Mac终极NTFS读写解决方案:Nigate工具完整指南 【免费下载链接】Free-NTFS-for-Mac Nigate,一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh_mirrors/fr/Free…

作者头像 李华
网站建设 2026/1/31 5:33:29

FramePack视频帧优化工具:让AI视频制作变得简单高效

FramePack视频帧优化工具:让AI视频制作变得简单高效 【免费下载链接】FramePack 高效压缩打包视频帧的工具,优化存储与传输效率 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack 想要快速制作高质量的AI视频内容吗?FramePack这…

作者头像 李华
网站建设 2026/1/31 0:50:52

Zotero参考文献复制功能全面修复指南:从诊断到彻底解决

Zotero参考文献复制功能全面修复指南:从诊断到彻底解决 【免费下载链接】zotero-reference PDF references add-on for Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-reference 学术写作过程中,Zotero的参考文献复制功能突然失效…

作者头像 李华
网站建设 2026/1/31 12:30:15

StructBERT零样本分类器优化指南:提升实时分类性能

StructBERT零样本分类器优化指南:提升实时分类性能 1. 引言:AI 万能分类器的崛起与挑战 随着自然语言处理技术的不断演进,零样本文本分类(Zero-Shot Text Classification) 正在成为企业快速构建智能语义系统的首选方…

作者头像 李华
网站建设 2026/1/31 7:09:13

emwin界面缩放适配方案探讨

emWin界面缩放适配:从原理到实战的系统性方案在嵌入式图形界面开发中,一个看似简单却极具挑战的问题是——如何让同一套UI代码,在不同尺寸、不同分辨率的屏幕上都“长得好看”?这并不是简单的“放大缩小”就能解决的事。按钮会不会…

作者头像 李华
网站建设 2026/2/1 15:34:06

Retrieval-based-Voice-Conversion-WebUI语音转换框架完整使用手册

Retrieval-based-Voice-Conversion-WebUI语音转换框架完整使用手册 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voic…

作者头像 李华