我看到了关于在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)中吗?有可能吗?
答案 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不存在,