巧用异或知识解决力扣中的题目

题目:找出一个列表中缺失的那个数字,比如a = [1,1,2,2,3,4,4],通过算法找出缺失的数字为3.这里有个坑,如果你使用count计数器来做的话,他会报超时出错误,因为系统会给你一个特别庞大的列表,所以你需要考虑时间复杂度。下面是我写的两种方法,大家可以参考一下:
第一种:使用异或操作,这个大家或许都不怎么用,举个例子假设有a,b两个数字,经过异或运算你会发现一个神奇的事情。那就是:
a ^ b ^ a = a,所以用这个聪明的想法就可以写出下面的代码,Python是世界上最美丽的语言!哈哈

a = [2,2,1,3,3,4,4]
# a = [i for i in range(1000000)]*2 + [100000001]
k = a[0]
for i in range(0,len(a)-1):
    if i < len(a):
        k = k ^ a[i+1]
print('---------------',k)

这里我自己有有个想法,但是没有测试,嘿嘿,大家也可以提出意见:

sum_a = sum(a)
sum_set = sum(set(a))*2

print(sum_set-sum_a)

就这短短的三行,解决问题!!点赞哈哈

猜你喜欢

转载自blog.csdn.net/qq_42166308/article/details/103979450