找出只出现过一次的两个数字

来源:互联网 发布:js中的focus 编辑:程序博客网 时间:2024/04/28 06:58

数组中,有两个数字只出现过一次,其余数字都出现两次,找出只出现过一次的两个数字。并且按照顺序输出。

a=[1,2,3,4,5,8,6,1,2,3,7,4,5,6]

8

7

a=[1,2,3,4,5,8,6,1,2,3,7,4,5,6]'''任何数字与0异或都是其本身,两个相同的数字异或为0。'''def yihuo(a):r=0for i in a:r^=i#print(r)return r'''根据异或值的1位,通过与运算,来分开原数组。'''def search():r=yihuo(a)p=0while r!=0:if r%2==1:breakr//=2p+=1a1,a2=[],[]for i in a:if i>>p&1==1:a1.append(i)else:a2.append(i)r1,r2=yihuo(a1),yihuo(a2)return r1,r2'''按顺序输出'''def printout():for i in a:if i in search():print(i)printout()

原创粉丝点击