算法导论 练习题 17.3-6

来源:互联网 发布:土木工程词典 知乎 编辑:程序博客网 时间:2024/05/29 17:18

将两个栈分为左右

Enqueue:对左边的栈进行push

Dequeuqe:如果右边的栈非空,对右边的栈进行pop。

                       如果右边的栈为空,做一个迭代:把左边的栈元素pop出来,push进右边的栈,直到左边的栈为空。

摊还分析:

设D(i)=2*左边的栈元素个数

Enqueue:ci+D(i)-D(i-1)=1+2*(1)=3

Dequeue:如果右边的栈非空:ci+D(i)-D(i-1)=1+2*0=1

                     如果右边的栈为空:ci+D(i)-D(i-1)=1+2*leftElements+2*(0-leftElements)=1

所以每个操作摊还代价为O(1)

原创粉丝点击