本题利用xor位运算的性质,xor运算两数相同时结果为0, 两数不同结果为1. 且位运算符合交换律。
对数组所有元素依次进行位运算,得到结果就是唯一出现一次的元素
class Solution:
def singleNumber(self, nums: List[int]) -> int:
res = nums[0]
for num in nums[1:]:
res = num ^ res
return res
或者使用reduce()函数更简练:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
return reduce(lambda x,y: x^y, nums)