【发布时间】:2014-02-08 08:07:07
【问题描述】:
我需要一个可以处理这些需求的数据结构: * 在 O(lg(n)) 中检索最小值 * 在 O(lg(n)) 中检索最大值 * 在 O(lg(n)) 中向数据结构中插入一个值
对于最大值和插入-我认为最大二进制堆可以处理这个问题,但是它不适用于最小值,因为最小值可以在大约 n/2 值的每个叶子中 - 换句话说 O (n) ?如果我错了,请告诉我。
另外,如果有人能帮我找到满足这些需求所需的数据结构,我将非常高兴。
非常感谢
【问题讨论】:
-
两个堆怎么样?
-
你只需要给它添加值,并检索最低和最高吗?听起来您只需要几个变量即可。
-
@LasseV.Karlsen:这有点取决于“检索”的含义。如果它意味着“以这样一种方式从数据结构中删除,以便我可以获得下一个最小的项目”,那么它需要的不仅仅是几个变量。我强烈怀疑他正在尝试实现双端优先级队列。
标签: algorithm data-structures time-complexity