题目说明
给定一个列表,其中包含数对相同元素与一个单独元素,例如[2,2,1]、[1,3,5,5,1],要求输入列表后输出单独元素的值。
算法1 数学方法
基本思想如下:
2∗(a+b+c)−(a+a+b+b+c)=c
代码如下:
class Solution(object):
def singleNumber(self, nums):
'''
:type nums: List[int]
:rtype: int
'''
return 2 * sum(set(nums)) - sum(nums)
算法2 异或运算
我们知道,相同的元素通过异或运算后得到的结果是0,0与任何元素异或得到的还是该元素,因此通过异或运算我们可以消除列表中重复出现偶数次的元素。
代码如下:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
a = 0
for i in nums:
a ^= i
return a