用栈实现队列
- https://leetcode.cn/problems/implement-queue-using-stacks/description/

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。
思路
- 初始化
两个栈
,一个in栈
,一个out栈
push()
时,直接将元素
插入in栈
即可pop()
时,如果out栈
为空
,要将in栈
中的所有元素
导入out栈
;如果out栈
不为空
,将元素弹出
即可peek()
同pop()
一样,但是不用弹出
- 如果
in栈
和out栈
都为空
,则说明队列为空
class MyQueue:def __init__(self):self.stack_in = []self.stack_out = []def push(self, x: int) -> None:self.stack_in.append(x)def pop(self) -> int:if self.empty():return Noneif self.stack_out:return self.stack_out.pop()else:while self.stack_in:tmp = self.stack_in.pop()self.stack_out.append(tmp)return self.stack_out.pop()def peek(self) -> int:if self.empty():return Noneif self.stack_out:return self.stack_out[-1]else:while self.stack_in:tmp = self.stack_in.pop()self.stack_out.append(tmp)return self.stack_out[-1]def empty(self) -> bool:if not self.stack_in and not self.stack_out:return Truereturn False