任意给定一个长度为N的数组,其中只有一个数出现奇数次,其他数都是偶数次。
如何用最少的时空复杂度快速找到这个数字?
代码如下:
nums = [1,2,2,3,4,4,4,2,2,3,1] # 任意给定的测试数组
"""
哈希法,将数组中的数逐个放入字典中的键,并弹出,奇数次的数会留下
"""
temp = {} # 创建一个空字典
for i in nums:
try:
temp.pop(i) # 如果字典中有i,就弹出
except:
temp[i] = 1 # 键所对应的值随便赋值为1
print(temp.popitem()[0])
测试结果:
4
[Finished in 0.4s]
版权声明:本文为YZCOrange原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。