尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
leetcode 136只出现一次的数字
LeetCode 136. 只出现一次的数字题目给定一个非空整数数组nums除了某个元素只出现一次以外其余每个元素均出现两次找出那个只出现一次的元素。例如输入nums {4, 1, 2, 1, 2} 输出4这道题主要有两种解法哈希表unordered_map和异或运算XOR。一、方法一哈希表unordered_map1. 完整代码精简注释class Solution { public: int singleNumber(vectorint nums) { unordered_mapint,int hash; // 数字 - 出现次数 // 统计每个数字的出现次数 for(auto num : nums){ hash[num]; } // 找到出现次数为1的数字 for(auto [num,count] : hash){ if(count 1) return num; } return -1; } };2. 核心思路利用哈希表存储每个数字及其出现次数。unordered_mapint,int hash;其中Key数组中的数字。Value数字出现的次数。例如nums {4, 1, 2, 1, 2};统计后Key数字Value次数411222遍历哈希表找到count 1的数字并返回。3. 重点语法① 统计出现次数hash[num];如果num不存在哈希表会自动创建对应的键值对将整数值初始化为 0再执行加 1。② 遍历键值对for(auto [num,count] : hash)其中num键Key。count值Value。[]结构化绑定用于拆分键值对。也可以写成for(auto p : hash){ if(p.second 1){ return p.first; } }其中p.first表示 Keyp.second表示 Value。4. 复杂度分析时间复杂度平均 \(O(n)\)遍历数组统计次数再遍历哈希表。空间复杂度\(O(n)\)需要额外的哈希表。5. 方法总结哈希表解法主要分为三步创建unordered_mapint,int哈希表。遍历数组利用hash[num]统计次数。遍历哈希表返回出现次数为 1 的数字。核心利用 Key 存储数字Value 存储出现次数。二、方法二异或运算XOR1. 完整代码精简注释class Solution { public: int singleNumber(vectorint nums) { int ret 0; // 初始化异或结果 // 将所有数字依次异或 for(auto num : nums){ ret ^ num; } return ret; // 返回只出现一次的数字 } };2. 核心思路异或运算符为^。异或规则二进制位相同为 0不同为 1。aba ^ b000011101110异或具有三个重要性质① 相同数字异或为 0\[ a\oplus a0 \]② 任何数字与 0 异或等于本身\[ a\oplus 0a \]③ 异或满足交换律和结合律\[ a\oplus b\oplus a(a\oplus a)\oplus bb \]因此可以利用异或运算消除所有出现两次的数字最终只剩下出现一次的数字。3. 举例模拟nums {4, 1, 2, 1, 2};初始化int ret 0;执行过程当前数字 num异或操作ret40 ^ 4414 ^ 1525 ^ 2717 ^ 1626 ^ 24最终返回return ret; // 4从数学上理解\[ 4\oplus1\oplus2\oplus1\oplus2 \]根据交换律和结合律\[ 4\oplus(1\oplus1)\oplus(2\oplus2) \]\[ 4\oplus0\oplus0 \]\[ 4 \]所有出现两次的数字都会抵消为 0最终就是 0 与只出现一次的数字异或结果为该数字本身。4. 重点语法ret ^ num;等价于ret ret ^ num;其中^按位异或运算。^异或赋值运算。注意^不是乘方运算。5. 复杂度分析时间复杂度\(O(n)\)只遍历数组一次。空间复杂度\(O(1)\)只使用一个额外变量ret。6. 方法总结异或解法主要分为三步初始化ret 0。遍历数组将每个数字与ret异或。所有成对出现的数字相互抵消最终返回ret。核心相同数字异或为 00 与任何数字异或等于数字本身。三、两种方法对比对比哈希表异或核心思想统计出现次数相同数字相互抵消数据结构unordered_map不需要时间复杂度平均 \(O(n)\)\(O(n)\)空间复杂度\(O(n)\)\(O(1)\)优点容易理解适用范围广代码简洁空间效率高缺点需要额外空间依赖题目中特定的出现次数条件四、最终记忆模板哈希表统计次数找到出现一次的数字。unordered_mapint,int hash; for(auto num : nums){ hash[num]; } for(auto [num,count] : hash){ if(count 1) return num; }异或相同数字抵消剩下唯一数字。int ret 0; for(auto num : nums){ ret ^ num; } return ret;最后总结哈希表和异或都能解决这道题但题目要求线性时间复杂度和常数额外空间复杂度因此异或才是本题最优解法。以后遇到类似题目可以这样判断需要统计数字出现次数优先考虑unordered_map。需要判断数字是否出现过优先考虑unordered_set。所有数字出现两次只有一个数字出现一次优先考虑异或运算。
RELATED

相关推荐

YOLOv5s部署RK3588 NPU实战:INT8量化与性能调优避坑指南

YOLOv5s部署RK3588 NPU实战:INT8量化与性能调优避坑指南

1. 为什么我坚持把 YOLOv5s 塞进 RK3588 的 NPU 里RK3588 这颗芯片在边缘计算圈子里火得一塌糊涂,6 TOPS 的 NPU 算力加上八核 CPU 的配置,让不少做视觉项目的团队把它当成了首选方案。但真正上手部署过的人都知道,从 PyTorch 训练出来的权重…

📅 2026/10/14 15:04:06
SpringBoot+Vue构建高效航班进出港管理系统

SpringBoot+Vue构建高效航班进出港管理系统

1. 项目背景与核心价值航班进出港管理系统是航空运输行业的核心业务支撑平台,直接关系到机场运营效率与航班安全。传统系统往往面临三个典型痛点:数据孤岛导致信息滞后、手工操作带来的误差累积、突发状况响应速度不足。这套基于SpringBootVue的技术方案…

📅 2026/10/14 15:04:06
智能安防转型实战:从卖设备到卖方案,AI算法与边缘计算落地指南

智能安防转型实战:从卖设备到卖方案,AI算法与边缘计算落地指南

1. 从卖盒子到卖结果:智能安防转型的底层逻辑我在安防行业摸爬滚打了快十年,从最早给客户装DVR硬盘录像机,到后来做网络摄像机调试,再到现在天天跟算法和平台打交道,亲眼看着这个行业从“拼像素、拼价格”一路卷到了“…

📅 2026/10/14 15:04:06
MORE NEWS

更多资讯

📰

铝代木构件筑文旅地标 承古韵兼济长效品质

坐落于山西长治长子县的白山羿神文化旅游区,以上古羿神文化为内核,打造集文化展示、游客服务、休闲游憩于一体的文旅综合体。项目核心建筑采用新中式仿古建筑形制,歇山顶舒展大气,青砖墙质朴厚重,檐下构件、中式门窗等关键部位全面应用铝代木仿古构件,以现代工业工艺复刻传统木…

📰

PHP防伪证书系统:TCPDF动态生成PDF与防伪验证闭环

简介:这是一套面向中小企业与软件开发者的产品防伪证书在线生成与查询系统源码,基于PHPMySQL构建,适用于需快速部署防伪验证能力的电商、制造及品牌服务商。资源包含完整可运行系统,内置90套授权证书模板及PSD公章源文件&#xff…

📰

ISO/SAE 21434落地指南:从TARA分析到CAL等级的工程实践

简介:ISO/SAE 21434(道路车辆—网络安全工程)国际标准草案,由国际标准化组织与美国汽车工程师学会联合制定,面向汽车制造商、供应链参与者和网络安全研究人员,为车辆全生命周期的信息安全风险管理提供统一框…

📰

轻量PHP在线排版工具:解决粘贴乱码与段落失序问题

简介:这是一套基于PHP开发的轻量级在线文字排版工具源代码,面向Web开发者、PHP初学者及需要定制化文本处理功能的技术人员,解决日常内容编辑中格式统一、字数统计与空行管理等高频排版需求。资源包共17个文件,涵盖4个JavaScript脚…

📰

沁言学术、Jenni AI等5款AI科研工具盘点,论文写作各环节谁补位

摘要:本文把沁言学术、Figdraw、Jenni AI、ResearchRabbit、Origin 放在同一张桌上比较,围绕论文写作这件事,看检索、阅读、起草、润色、配图、文献管理各环节分别由谁补位,最后给出一套按研究阶段挑工具的思路。结论先放前面:没有一款能包打全场,关键是按自己的卡点组合使用。…

📰

EPICS电机驱动开发:四层架构与ASYN实时通信深度解析

1. EPICS电机驱动不是“写个控制程序”那么简单很多人第一次听说“编写EPICS电机驱动”,下意识就以为是“用C写个读写寄存器的函数,再套个PV名发出去”——我刚接触时也这么想。结果在某高校实验室调试一台步进电机控制器时,连续三天卡在IOC启…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬