0
如果我有一個像堆棧一樣的數據結構,我使用雙鏈表來實現,我還添加了一個始終保持中間元素的指針。改進數據結構
我想通過添加一個方法peekAt(k)來修改它,它將返回O(log(k))中第K個插入的元素。
任何想法,我該怎麼辦呢?謝謝。
如果我有一個像堆棧一樣的數據結構,我使用雙鏈表來實現,我還添加了一個始終保持中間元素的指針。改進數據結構
我想通過添加一個方法peekAt(k)來修改它,它將返回O(log(k))中第K個插入的元素。
任何想法,我該怎麼辦呢?謝謝。
如果將它實現爲double linked list
,則不能在O(log(k))
時間返回k-th
elementh,因爲鏈接列表不具有對元素的隨機訪問權限。我建議將您的堆棧作爲(dynamic) array
而不是您可以實現的O(1)
訪問。
編輯:
如果你也快insertion/deletion
希望在任何地方,那麼我建議使用一個balanced binary tree
。
插入和移除必須在O(1)中,這對於動態數組是不可能的。 – Genadi