将两个栈分为左右
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)