Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution:
# @param A, a list of integer
# @return an integer
def singleNumber(self, A):
l=[]
x=0
minus=0
for i in range(32):
l.append(0)#创建个32的列表,起始都是0
for j in A:
if j<0:#负数位移有点问题,不是简单的右移,还要计算,为了简单运算,负数转正数
j=-j
minus=minus+1#同时记录负数的个数,如果最后不是3的倍数,说明所求的数字是负数
for i in range(32):
l[i]=l[i]+ ((j>>i)&1)#不断右移,是1的位数上加1
if l[i]==3:#是3,清零
l[i]=0
for i in range(32):
if l[i]==1:
x=x+2**i#通过2进制把数算出来
if minus%3!=0:
x=-x#是负数?
return x
本文介绍了一种使用位运算解决数组中唯一出现一次元素的问题的方法。该算法具有线性时间复杂度,且几乎不使用额外内存。通过对数组进行遍历并利用位操作特性,成功找出未重复的数字。
610

被折叠的 条评论
为什么被折叠?



