python 单个数字问题
==>给定一个数组,每个数字会出现两次,尤其只有一个是单次的。
要求:时间复杂度O(n)
方法一:进行异或操作,相同的数异或为0;空间复杂度为O(1)
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
xor_num = 0
for i in nums:
xor_num^=i#异或
return xor_num
方法二:集合操作,集合不包括重复变量;空间复杂度为O(n)
class Solution(object):
def singleNumber(self, nums):
return 2*sum(set(nums))-sum(nums))