开始学算法(刷算法题)过程记录 8
题目描述:用两个栈实现队列
题目链接:https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
题目思路:插入时压入栈1。弹出时栈2不为空,弹出栈2栈顶元素,如果为空,把栈1逐个出栈入栈2,再弹出栈2栈顶元素。
利用了2个栈互相压入弹出可以改变头尾顺序的特点。可以想象成一条线在2个桶之间来回弹,第一个桶尾朝下,弹到另一个桶就是尾朝上了。再弹回去就是尾朝下。
题目实现:
push 从数组尾插元素 。pop从数组尾弹出元素,返回弹出的元素。
相关题目:用2个队列实现一个栈
解题思路:队列先进后出,栈先进先出。可以把队列前后反向放置成一个U型,如下图所示

题目实现:
unshift()从数组头插入元素,pop()从数组尾弹出元素,返回弹出的元素