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
posted @ 2025-06-12 10:18  爆爆啥龙马  阅读(41)  评论(0)    收藏  举报