[英]What is Time complexity of "set" and "if item in array" in Python?
我需要檢查一個數字及其雙精度數是否存在於數組中。 這段代碼使用set
來解決它。 但是我不確定時間復雜度是否優於O(N^2)
。 我使用for loop
和if 2*item in s
如下所示。 不是要知道該項目是否在數組中,我們使用另一個O(N)
。 這意味着總共O(N^2)
? 如果它是最佳的,我如何在不使用nested loop
的情況下實現 C 中的代碼?
非常感謝!
def checkIfExist(arr]) -> bool:
s = set(array)
for item in s:
if 2 * item in s and item != 0:
return True
if arr.count(0) >= 2:
return True
return False
python 中集合的“in”運算符的時間復雜度平均為 O(1),僅在最壞的情況下為 O(N),因為 python 中的集合在內部使用 HashTable。
所以你的函數的平均時間復雜度應該是 O(N),只有在最壞的情況下才會是 O(N^2),其中 N 是數組的長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.