# 异或 x^x = 0 x^0 = x # 异或 == 无进位相加 # 在二进制层面 相同为0 不同为1 # 题目 一类奇数 其余偶数 找奇数 eor = 0 list = [1,1,1,2,2,3,3,1,1,3,3] for i in list: eor = eor^i print('ero',eor) # 题目 两种奇数 其余偶数 ,找奇 # & 按位 与 运算符 两个相应二进制位为1 ,则结果该位置为1, 否则结果该位置为0 eor1 = 0 list1 = [-1,0] for j in list1: # eor1 = a^b != 0 ero1必然有一个位置上是1 eor1 = eor1^j # 相同为0 不同为1(所以最右侧位置为1时, ab该位置不同) rightOne = eor1 & (~eor1 + 1) # 提取出最右边1 一个数 与 取反 +1 就是取出来最右侧数 onlyOne = 0 for cur in list1: if cur & rightOne ==0 : # &->为1则1,反之则0 ; if cur & rightOne !=0 (一样) onlyOne ^= cur; eor1 = eor1^onlyOne print(eor1,onlyOne)
异或 ,题136 ,260
最新推荐文章于 2024-10-02 10:53:34 发布