在O(1)中设计堆栈+ findmin和deletemin?

时间:2013-10-13 13:32:04

标签: algorithm data-structures stack

我看到了关于在O(1)时间内使用findmin设计堆栈的问题的答案:

https://stackoverflow.com/a/3435998/2653179

如果请求相同怎么办:

Devise a stack-like data structure that does push, pop and min (or max) operations 
in O(1) time. There are no space constraints.

但是,还原蛋白也应该在O(1)中吗?有可能吗?

1 个答案:

答案 0 :(得分:4)

否。它无法完成 - 因为它允许O(n)排序。

Assume there is such a DS, let it be D
Let A be an input array.
push all elements from A to D.
while D is not empty:
   yield D.min()
   D.popMin()

上述内容将在O(n)中运行,假设popMin()min()O(1),并对数组进行排序。
但是,排序是Omega(nlogn)问题。矛盾。
因此我们可以得出结论,这样的DS不存在,