class Solution:
def theTwoNumbers(self,a):
ans = [0,0]
for i in a:
#print(ans[0]^i) # ^是异或运算符号,当这个值的二进制同值为0,异值为1
""" 例:
a = 120 二进制为01111000
b = 150 二进制为10010110
a ^ b 二进制为11101110 转为十进制为 238
"""
ans[0] = ans[0]^i
c = 1
while c & ans[0] != c:
c = c << 1 # 左移动运算符号,运算规则:左移动几位数就在二进制数最后面加几个0,右移动则在最后面删减0
for i in a:
if i & c == c:# 运算规则: 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
ans[1] = ans[1]^i
ans[0] = ans[0]^ans[1]
return ans
if __name__ == '__main__':
arr = [1,2,5,1,3,3]
solution = Solution()
print("数组:",arr)
print("两个没有重复的数字:",solution.theTwoNumbers(arr))
'''0^0=0; 0^1=1; 1^0=1; 1^1=0; 即:参加运算的两个对象,如果两个位为“异”(值不同),则该位结果为1,否则为0。'''
Python编程500例-009不重复的俩个数
最新推荐文章于 2024-07-17 09:15:39 发布