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

例题解析:利用异或运算(XOR)找出单独的数

异或运算(XOR)

异或运算是一种位运算,通常用符号 ^ 表示。它的运算规则如下:

  • 如果两个二进制位相同,结果为 0
  • 如果两个二进制位不同,结果为 1

具体来说,对于两个二进制位 a 和 b,异或运算的结果如下:

aba ^ b
000
011
101
110

异或运算的特性

  1. 交换律a ^ b = b ^ a
  2. 结合律(a ^ b) ^ c = a ^ (b ^ c)
  3. 自反性a ^ a = 0
  4. 与零的异或a ^ 0 = a

--------------------------------------------以下是题目----------------------------

题目 :问题描述

在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。

要求:

  1. 设计一个算法,使其时间复杂度为 O(n),其中 n 是班级的人数。
  2. 尽量减少额外空间的使用,以体现你的算法优化能力。

测试样例

样例1:

输入:cards = [1, 1, 2, 2, 3, 3, 4, 5, 5] 输出:4 解释:拿到数字 4 的同学是唯一一个没有配对的。

样例2:

输入:cards = [0, 1, 0, 1, 2] 输出:2 解释:数字 2 只出现一次,是独特的卡片。

 完整的代码

def solution(cards):# 初始化一个变量来存储异或的结果result = 0# 遍历数组中的每一个元素for card in cards:# 对每一个元素进行异或运算result ^= card# 返回最终的结果return resultif __name__ == "__main__":# 添加你的测试用例print(solution([1, 1, 2, 2, 3, 3, 4, 5, 5]) )print(solution([0, 1, 0, 1, 2]))print(solution([7, 3, 3, 7, 10]))

解释

  • result = 0:初始化一个变量 result 为 0,用于存储异或运算的结果。
  • for card in cards:遍历数组中的每一个元素。
  • result ^= card:对每一个元素进行异或运算,并将结果存储在 result 中。
  • return result:返回最终的结果,即唯一出现一次的数字。

这个代码可以正确地找到数组中唯一出现一次的数字,并且满足题目要求的时间复杂度 O(n) 和空间复杂度 O(1)。

如果你有任何问题或需要进一步的帮助,请告诉我!

 

http://www.lryc.cn/news/482687.html

相关文章:

  • 如何处理微信小程序大量未捕获的异常
  • C#-StringBuilder
  • SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
  • linux安装zookeeper和kafka集群
  • 洞悉 Linux 系统运行细节,使用 atop 监测和回看系统负载状态
  • “双十一”电商狂欢进行时,在AI的加持下看网易云信IM、RTC如何助力商家!
  • Python调用企业微信的扫一扫
  • 速盾:CDN和OBS能共用流量包吗?
  • 第8章 利用CSS制作导航菜单
  • C# 集合与泛型
  • el-date-picker 设置开始时间和结束时间
  • 【Docker】 常用命令
  • docker compose - 设置名字
  • 工业拍卖平台、信息发布、租赁商城平台系统适用于全行业解决方案。
  • 一个win32 / WTL下多线程库(CThread类)的使用心得
  • 使用wordpress搭建简易的信息查询系统
  • PAT甲级 1076 Forwards on Weibo(30)
  • 揭开 gRPC、RPC 、TCP和UDP 的通信奥秘
  • 使用Web Worker来处理多线程操作,以及如何避免主线程卡顿。
  • 杂谈:业务说的场景金融是什么?
  • 在vscode实现用和Chrome开发者工具中相同的快捷键进行面板切换
  • 【ESP32+MicroPython】硬件控制基础
  • Python学习从0到1 day26 第三阶段 Spark ① 数据输入
  • kafka消费者的消费分区策略有哪些,默认是哪个?
  • 前端常用时间操作汇总
  • 106. UE5 GAS RPG 使用MVVM
  • Elasticsearch中什么是倒排索引?
  • 深度学习:AT Decoder 详解
  • pythons工具——图像的随机增强变换(只是变换了图像,可用于分类训练数据的增强)
  • C++中volatile限定符详解