当前位置: 首页 > news >正文

算法题(23):只出现一次的数字

初级:

审题:

需要输出只出现了一次的数据,其他数据均出现了两次

思路:

若不限制空间复杂度:

方法一:哈希表

用哈希映射循环一次,把对应数字出现的次数记录到数组里面,然后再遍历一次哈希表,把次数为1的数据输出

但是这里限制了空间复杂度,所以我们利用异或运算来实现

方法二:异或运算

由于异或运算有如下三个特性,所以我们使用异或运算来实现

1.任何数与0进行异或运算得到的结果都是该数本身

2.任何数自身与自身进行异或运算得到的结果都是0

3.异或运算满足交换律与结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b

由3可知:无论该数组中数据排序如何,我们都可以视为他们是两个部分,出现两次部分与出现一次部分。

由2可知,我们的出现两次部分通过异或运算可以消掉

由于1,我们一开始用0为初始值,所以对整个数组元素依次进行运算最后的结果就是0⊕answer = answer。answer就是只出现一次的数据

解题:

136. 只出现一次的数字 - 力扣(LeetCode)


http://www.mrgr.cn/news/82336.html

相关文章:

  • 计算机网络 (19)扩展的以太网
  • primevue的<Menu>组件
  • 智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之19 再次重建 之5 项目文件三大部
  • 2.C语言基础:语句、表达式、注释与标准库简介
  • 商用车自动驾驶,迎来大规模量产「临界点」?
  • MySQL 锁那些事
  • win32汇编环境,对话框中显示bmp图像文件
  • linux常用命令合集
  • 2025/1/2
  • MQ-导读
  • 设计模式 结构型 适配器模式(Adapter Pattern)与 常见技术框架应用 解析
  • Windows下使用bat实现端口映射进程守护
  • 【技术新浪潮】DeepSeek-V3:中国AI的开源巨浪,全球AI格局的破局者
  • 使用Python,networkx构造有向图及无向图以及图合并等api
  • vue设计与实现-框架设计
  • FPGA随记——过约束
  • WPF的一些控件的触发事件记录
  • 我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
  • 在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)
  • 人脑处理信息的速度与效率:超越计算机的直观判断能力
  • win32汇编环境,窗口程序显示bmp图像文件
  • Structured-Streaming集成Kafka
  • LinuxC高级day5
  • CTFshow—远程命令执行
  • Kettle迁移至Oracle的空字符串和NULL的问题处理,大坑!
  • 国产编辑器EverEdit - 常用资源汇总