Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
我的勉强算法:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
set = {}
for i in nums:
if i not in set:
set[i] = -1
else:
set[i] = 1
for i in nums:
if set[i] == -1:
return i
看了答案后,完全没有想到,居然可以用XOR来解决这个问题。
对于异或来说:
异或运算是可交换,即 a ^ b = b ^ a
0 ^ a = a
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = 0
for i in nums:
result ^= i
return result