除了1个(或2个)元素只出现一次之外,每个元素都出现两次。
def find_uniq_one(arr):
xv = 0
for e in arr:
xv = xv ^ e
print( xv )
def find_uniq_two_2(arr):
axorb = 0
for e in arr:
axorb = axorb ^ e
dif = 0
while(axorb & 1 == 0):
axorb = axorb >> 1
dif = dif + 1
axorb = 1 << dif
xa, xb = 0, 0
for e in arr:
if e & axorb:
xa = xa ^ e
else:
xb = xb ^ e
print(xa,xb)
if __name__ == "__main__":
find_uniq_two_2([1,1,2,2,3,4])
本文介绍了一种高效算法,用于从数组中找出唯一出现一次的元素。该算法分为两个部分:一是当数组中仅有一个唯一元素时的解决方案;二是处理存在两个唯一元素的情况。通过位运算异或操作实现,巧妙地利用了数学特性来降低时间和空间复杂度。

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



