classSolution(object):defsingleNumber(self, nums):"""
:type nums: List[int]
:rtype: int
"""
res=0for n in nums:
res ^= n
return res
137. Single Number II 想想Single Number是怎么做。a^a=0的本质是a转化为二进制的a1,两个a1每位上的数字对应相加取模2=0. 所以k次就转为k进制。这题是k=3,还要注意负数。
classSolution:defsingleNumber(self, nums):"""
:type nums: List[int]
:rtype: int
"""
self.r=[0]*32
k=3for n in nums:if n<0: n+=2**32
self.helper(n,k)
m=self.K_ten(self.r,k)return m if m<2**31else m-2**32defhelper(self,n,k):
cur=self.ten_K(n,k)for i inrange(32):
self.r[i]=(self.r[i]+cur[i])%k
defK_ten(self,n,k):
res=0for i inrange(31,-1,-1):
res=res*k+n[i]return res
deften_K(self,n,k):
res=[0]*32
index=0while n:
res[index]=n%k
n//=k
index+=1return res