我在 Java 中使用 2 Stacks 实现了一个队列,我遵循这个算法:
enQueue(x)
将 x 推入 stack1deQueue()
1) 如果两个堆栈都是空的,则错误。
2) 如果 stack2 为空而 stack1 不为空,则将 stack1 中的所有内容推送到 stack2。
3)从stack2中弹出元素并返回它。
现在,这里的问题是第一个deQueue()
操作非常慢(因为它将所有内容传输到stack2
)。我们可以以某种方式修改算法,使其deQueue
始终为 O(1) 吗?还有其他选择吗?