[英]Time complexity: deleting element of deque
刪除collections.deque
的元素的時間復雜度是多少?
例如:
deq = collections.deque([1, 2, 3])
del deq[1]
時間復雜度為 O(n),其中 n 是到最近端點的距離。 雙端隊列的總大小無關緊要。
deque的實現是一個固定長度塊的雙向鏈表。 刪除一個元素需要單獨移動刪除點和最近端點之間的所有元素。
考慮以下示例:
>>> d = deque('abcdefghijklmnop')
>>> del d[3]
出於說明目的,假設以下數據布局的塊大小為 3(實際塊大小為 64):
ab ⇄ cde ⇄ fgh ⇄ ijk ⇄ lmn ⇄ op # State before deletion
× # Step 1, delete "d"
ab ⇄ c-e ⇄ fgh ⇄ ijk ⇄ lmn ⇄ op
→ # Step 2, move "c" to right
ab ⇄ -ce ⇄ fgh ⇄ ijk ⇄ lmn ⇄ op
→ # Step 3, move "b" to right
a- ⇄ bce ⇄ fgh ⇄ ijk ⇄ lmn ⇄ op
→ # Step 4, move "a" to right
a ⇄ bce ⇄ fgh ⇄ ijk ⇄ lmn ⇄ op # Final state after deletion
如您所見,已刪除元素和端點之間的數據元素都必須向右移動一個。
如果“k”被刪除,元素“lmnop”將全部向左移動一位。 該算法足夠聰明,可以朝着最近的端點工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.