任意給定一個長度爲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]