题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
方法一:
执行用时: 48 ms
内存消耗: 16.4 MB
利用异或运算符
异或:相同为0,不同为1. 异或同一个数两次,原数不变。
class Solution:
def singleNumber(self, nums: List[int]) -> int:
num = 0
for i in nums:
num ^= i
return num
交换律:a ^ b ^ c = a ^ c ^ b
任何数于0异或为任何数 0 ^ n = n
相同的数异或为0: n ^ n = 0
var a = [2,3,2,4,4]
2 ^ 3 ^ 2 ^ 4 ^ 4
等价于2 ^ 2 ^ 4 ^ 4 ^ 3 = 0 ^ 0 ^3 = 3