gpt4 book ai didi

algorithm - 使用队列实现栈——最好的复杂度

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:23 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以根据需要使用尽可能多的队列来实现堆栈,从而在 O(1) 中推送和弹出数据。如果没有任何 O(1) 算法,那么最好的复杂度是多少?

最佳答案

如果允许在队列中递归定义队列,则可以使用以下 O(1) 次推送/弹出:

代码:

STACK:
QUEUE q

PUSH (S, x):
QUEUE temp
ENQUEUE(temp, x)
ENQUEUE(temp, S.q)
S.q = temp


POP (S):
ANY x := DEQUEUE(S.q) # Error here if queue is empty
QUEUE S.q := DEQUEUE(S.q)
return x

结果是递归形成的堆栈。

如果 [1,2] 表示一个堆栈,其中 dequeue([1,2]) 将返回 1。那么如果 1 然后 3 然后 6 被压入堆栈的数据结构将如下所示:

[6,[3,[1,[]]]]

关于algorithm - 使用队列实现栈——最好的复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26643483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com