问题描述:有一个整数列表,里面有一个数字只出现了一次,而其他数字都出现了4次,要求查找这个只出现了一次的数字。
思路要点:一个数字和自己异或一次会变成0。
参考代码:
import random
def onlyYou(lst): r = lst[0] for item in lst[1:]: r = r ^ item return r
for i in range(100000): lst = random.sample(range(1000), 8) lst = lst[:-1]*4 + lst[-1:] random.shuffle(lst)
# 传统套路
r = onlyYou(lst)
# reduce,函数式编程 rr = reduce(lambda x,y:x^y, lst, 0) if lst.count(r)!=1 or lst.count(rr)!=1:
print(lst) print(r, rr)
运行后程序无输出,说明思路和代码正确。