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

例题解析:利用异或运算(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 result

if __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.kler.cn/a/390713.html

相关文章:

  • #渗透测试#网络安全# 一文了解什么是跨域CROS!!!
  • 第R4周:LSTM-火灾温度预测
  • krpano 实现文字热点中的三角形和竖杆
  • @LocalBuilder装饰器: 维持组件父子关系
  • Apache Sedona和Spark将geojson瓦片化例子
  • 微信小程序实现登录注册
  • 2.索引:MySQL 索引分类
  • html简单实现音乐播放
  • 一文了解什么是腾讯云开发
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • Linux内核编程(二十)RTC子系统一驱动rx8010
  • LeetCode 3.无重复字符的最长子串
  • Oracle 外键
  • 关于倍速播放百度网盘视频
  • 区块链革命:引领数字经济新纪元的创新引擎
  • 电子产品平整无瑕,玛哈特矫平机提升用户体验
  • 电信数据清洗案例:利用MapReduce实现高效数据预处理
  • 英语阅读做题思路从何而来?
  • 【MySQL】数据库知识突破:数据类型全解析与详解
  • 5G时代的关键元件:射频微波MLCCs市场前景广阔
  • 云ECS服务器:哈尔滨三级等保的云计算解决方案
  • ubuntu ros 解决建完图后 保存的地图非常小的问题
  • C++builder中的人工智能(10)神经网络中的Sigmoid函数
  • 萤石设备视频接入平台EasyCVR海康私有化视频平台监控硬盘和普通硬盘有何区别?
  • 【详细】如何优雅地删除 Docker 容器与镜像
  • 基于构件的软件开发、软件维护、区块链技术及湖仓一体架构的应用