题目

我的思路
存入dict中,key存数字,value存counter。存完后,一定有个counter为1,所以list(dict.values()).index(1)找到对应的index,并根据list(dict.keys())[index]找到对应的key。(这个方法以前有用到过)
class Solution:def singleNumber(self, nums: List[int]) -> int:dict = {}for num in nums:if(num in dict):dict[num] += 1else:dict[num] = 1result = list(dict.keys())[list(dict.values()).index(1)]return result
高智商xor方法
原理:相同数字xor会得到00…0, 00…0 xor 任一数字得到数字本身。结果就是所有出现两次的数字都因为xor自己而抵消,最后只留下出现一次的数字。
class Solution:def singleNumber(self, nums: List[int]) -> int:for i in range(1, len(nums)):nums[0] ^= nums[i]return nums[0]
