我有選擇正確的數據結構/ s的問題,這些都是要求:在集合中查找元素的索引,要使用哪個集合?
- 我必須能夠插入和刪除元素
- 我還必須能夠獲得元素的索引集合(集合中的順序)
- 元素具有唯一的標識號
- 我可以排序(如果需要)使用任何繞圈
排序並不元素真的是必須的,重要的是獲得元素的索引,不管內部如何實現,但無論如何,我認爲最好的方法是排序。 元素的索引是集合內部的順序。所以必須使用某種順序。當我刪除一個元素時,從其他元素到最後改變它們的順序/索引。
第一種方法是使用鏈表,但我不想O(n)。 我也想過使用和排序的字典,這會給O(log n)查找/插入/刪除,不是嗎? 有沒有更好的方法?我知道TRIE會爲O(1)提供常用操作,但我不知道如何獲取元素的索引,我不得不遍歷這個trie並給出O(n),我錯了嗎?
謝謝,我剛剛搜索訂單統計樹。正如你所說,他們有一個方法返回元素的「排名」,這正是我需要的。另外,擴展一個行爲似乎是一個訂單統計樹是非常有趣的。 –