簡體   English   中英

Python 中“set”和“if item in array”的時間復雜度是多少?

[英]What is Time complexity of "set" and "if item in array" in Python?

我需要檢查一個數字及其雙精度數是否存在於數組中。 這段代碼使用set來解決它。 但是我不確定時間復雜度是否優於O(N^2) 我使用for loopif 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 是數組的長度。

更多在這里https://wiki.python.org/moin/TimeComplexity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM