我有以下代码来查找列表中唯一的整数,该整数只出现一次,而所有其他整数出现3次。该代码适用于正整数,但有负整数的问题。
任何人都可以帮我解决这个问题吗?感谢。
class Solution:
# @param A, a list of integer
# @return an integer
def singleNumber(self, A):
if(A==None):
return None
else:
s=[0]*32
ans=0
for i in range(len(s)):
for j in A[:]:
if (j>>i)&1:
s[i] +=1
s[i]=s[i]%3
ans |= (s[i]<<i)
return ans
答案 0 :(得分:0)
collections.Counter
对于此类事情非常有用,并且不会对负数进行扼杀。
>>> import collections
>>> l = [1, 1, 1, 2, 3, 3, 3, 4, 4, 4]
>>> c = collections.Counter(l).items()
>>> [k for k, v in c if v == 1][0]
2
>>> l = [-i for i in l]
>>> c = collections.Counter(l).items()
>>> [k for k, v in c if v == 1][0]
-2
答案 1 :(得分:0)
def getSingle( arr, n):
ones = 0
twos = 0
for i in range(0,n):
twos = twos | (ones & arr[i]);
ones = ones ^ arr[i];
common_bit_mask = ~(ones & twos);
ones = ones & common_bit_mask;
twos = twos & common_bit_mask;
return ones;
也适用于负数。