【发布时间】:2012-08-17 03:47:43
【问题描述】:
我在 Java 中使用 2 个堆栈实现了一个队列,我遵循这个算法:
enQueue(x)
将 x 推入 stack1deQueue()
1) 如果两个堆栈都是空的,则错误。
2) 如果 stack2 为空而 stack1 不为空,则将 stack1 中的所有内容推送到 stack2。
3) 从stack2中弹出元素并返回。
现在,这里的问题是第一个deQueue() 操作非常慢(因为它将所有内容都转移到stack2)。我们可以以某种方式修改算法,使deQueue 始终为 O(1) 吗?还有其他选择吗?
【问题讨论】:
-
您使用什么数据模型来存储队列?
-
你已经拥有的是摊销 O(1)。
标签: java algorithm data-structures