方法一:使用自带collections模块的counter函数,统计各元素出现的次数并返回一个键值对字典,再对字典进行遍历,选出其中出现次数小于2的元素。
import collections
class Solution:
def singleNumber(self,nums):
dic = collections.Counter(nums);
for key,value in dic.items():
if value < 2:
print(key)
#return key
方法二:使用异或运算(是通过二进制进行计算的,同0异1的法则)。
class Solution:
def singleNumber(self,nums):
res = 0
for i in nums:
res^=i # res = res ^ i
print(res)
#return res
比如,输入的nums = [4,1,2,1,2]
1.i 在第一次等于4,i = 4 ,res = 0,计算所得 0 ^ 4 等同于 000 ^ 100 根据同0异1法则,得到结果100,等于4,所以res第一次等于4;
2.i 在第二次等于1,i = 1 ,res = 4,计算所得 4 ^ 1 等同于 100 ^ 001 根据同0异1法则,得到结果101,等于5,所以res第二次等于5;