题目:
给定一个整型数组,除了一个元素只出现一次外,其余每个元素都出现了三次。求出那个只出现一次的数。
注意:
你的算法应该具有线性的时间复杂度。你能否不使用额外的内存来实现?
分析:
- 通过集合运算可以得到去除每个元素只出现一次的集合,计算集合和的3倍,减去原列表之和,即得到列表只出现一次的元素的两倍;
代码:
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
return (sum(set(nums)) * 3 - sum(nums)) / 2
思考:
- 想了好久为什么是出现3次,会有什么坑; 除了非重复元素出现偶数次,可以通过所有元素取异或得到唯一元素,没有想到其他原因