力扣-136-只出现1次的数字
根据题目描述,那么可以推断数组长度一定是个单数,最多有(n-1)/2对……
线性时间复杂度,只遍历一次吗?不使用额外空间,就是在原数组上操作常数额外空间……
我第一眼的想法是用map,保存然后遍历,但是这样不够高效,遍历一遍数组再遍历一遍map,官方题解里也确实指出了这种不够好的办法,而且我觉得就算是不够好的办法里,用set也更简单
我看了标签“位运算”,甚至看了一眼评论的三条提示,但也没想到怎么把位运算用到这上面去
题解
题解的方法非常简单巧妙
- 根据题目除1个数字只出现1次,其他均为两次
结合
n^n=0
n^0=n
^ 满足结合/交换律
那么将数组中的元素全部异或起来,结果便是那个只出现一次的数字了
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16328927.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步