这题乍一看不难,但是加上了O(n)的时间复杂度和O(1)的空间复杂度之后,就变得让人无从下手了,我是想到了集合方法,a是a了,但是没达到要求,求证了官方题解之后才豁然,异或太妙了
集合的方法
def singleNumber(self, nums: List[int]) -> int:
seen = set()
for i in range(len(nums)):
if nums[i] not in seen:
seen.add(nums[i])
elif nums[i] in seen:
seen.remove(nums[i])
return seen.pop()
异或的方法
def singleNumber(self, nums: List[int]) -> int:
return reduce(lambda x, y :x^y, nums)