实现数据结构 - flex字典

时间:2014-05-27 18:21:26

标签: java dictionary hashtable skip-lists

我被要求设计一个代表字典的数据结构。字典包含具有不同键编号的项目。数据结构应支持O(1)时间内的以下操作:insert(x),delete(x),findMin(),findMax(),successor(x),predecessor(x)。搜索(x)操作也应该在O(log n)时间内。

分配给出了以下主题:跳过列表,哈希表和堆。我想最好的结构将是跳过列表,但我找不到在O(1)齿中实现插入和删除的方法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该同时使用哈希表和跳过列表数据结构。  每次插入元素时,您都可以更新minmax值。因此,findMin()findMax()也是O(1) insert()delete()也处于不变的时间。

顺便说一下,在搜索之前无法删除项目。如果您在O(logn)进行搜索,则delete()会自动O(logn)

哈希表提供(如果正确实施),在O(1)中搜索,删除和插入。其余操作(successor()predecessor())可在跳过列表中找到。