我需要构建一个仅使用O(n)位存储的数据结构。插入,删除和最大的最差时间复杂度需要为O(log n),但对于contains,它需要为O(1)。我一直在尝试使用只有1和0的二进制堆(以满足存储的O(n)位)但我似乎无法达到最大值并包含函数(关于它们最糟糕的时间复杂度)看起来)。谁能给我一个关于我哪里出错的线索?谢谢。
答案 0 :(得分:0)
有两个数据结构串联工作:平衡BST(如AVL树)和哈希表。插入元素需要O(log(n))时间用于BST,O(1)时间用于哈希表,因此O(log(n))时间总计。删除需要BST的O(log(n))时间,哈希表的O(1)时间。最大值需要BST的O(log(n))时间,一旦知道哪个元素是最大值,哈希表需要O(1)时间。包含哈希表需要O(1)时间(之后不需要检查BST,因为它们包含相同的元素)。实际上实现它会很困难,因为你需要在BST和哈希表中的元素之间保持指针,但是这种结构达到了所需的规范。