python异或运算^=
在集合的层面上,异或的意思是交集的补集。
在按位运算的层面上,异或则表示,如果二者不同,则为1,相同则为0.
其仍然具有性质:
与0异或等于它本身
与自己异或等于0
还满足交换律和结合律
最后,附上leetcode上的题,只出现一次的数字,题干如下:
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
答案如下
class Solution:
def singleNumber(self, nums: List[int]) -> int:
# 使用异或运算的特性:相同为0,不同为1
# 性质1: 任何数与0异或 等于它自身
# 性质2: 任何数与自己异或 等于0
# 性质3: 异或满足交换律和结合律
result = 0
for num in nums:
result ^= num # 连续异或所有元素
# 最终结果就是只出现一次的元素
return result

浙公网安备 33010602011771号