题目
https://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6
题意
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题解
栈的特点是先进后出,队列的特点是先进先出,假设两个栈A和B
入队操作:栈A入栈
出队操作:出队要出的是栈底的元素,所以可以将栈A全部出栈依次存入B栈,这样顺序颠倒了过来,再次出队时,再从B中弹出一个即可,如果B空了,再将A中的元素搬过来,并弹出一个。
1 | class Solution |
扩展题目
用两个队列来实现一个栈,完成栈的Push和Pop操作。 栈中的元素为int类型。
题解
假设两个队列A和B
入栈操作:入队列A
出栈操作:这时要出队的元素其实应该是队尾的元素,但队列只能出队首的元素,所以我们让队A中除队尾以外的元素全部到队B中去,然后队A出队,然后再将队B中的元素回到队A。
其实在这个过程中,队B只是起到一个调度的作用,在将队B中的元素移回队A中时,其实做的是无用的操作,我们只需要将两个队列的角色互换,这样便省去多余的移动操作。
1 | class Solution |