在我遇到的情況中,我想定義「優雅」具有1)常量O(1)時間複雜度用於檢查物品是否存在和2)只存儲物品,僅此而已。Python:用於存儲物品以檢查物品是否存在於容器中的優雅方式
例如,如果我使用列表
num_list = []
for num in range(10): # Dummy operation to fill the container.
num_list += num
if 1 in num_list:
print("Number exists!")
操作 「中的」 將根據[Link]
採取O(n)的時間爲了實現持續的檢查時間,我可以使用字典
num_dict = {}
for num in range(10): # Dummy operation to fill the container.
num_dict[num] = True
if 1 in num_dict:
print("Number exists!")
在一本字典,操作的情況下「中的」成本根據[Link]的O(1)時間,但需要額外的O(n)存儲來存儲虛擬值。因此,這兩個實現/容器都顯得不夠優雅。
什麼是更好的實現/容器來實現恆定的O(1)時間來檢查項目是否存在,而只存儲項目?如何將資源需求保持在最低水平?
你可能想要的是一個集合,它仍然有O(n)個存儲需求,但是你不必爲每個值存儲'True'值。否則,如果你不想O(n)存儲,你可以使用類似布隆過濾器的東西,但它有其他的折衷,因爲它是一個概率數據結構 –
我想你正在尋找集合。 – skrrgwasme
你們是正確的,集合正是我所需要的。我應該更徹底地閱讀我自己的鏈接。你會推薦我刪除這個問題,因爲它很基礎嗎? 弗朗西斯科:你介意提交一個答案嗎?我會接受它,但也許mods會在稍後刪除我的問題。如果是這樣,我提前道歉。 – Sean