题目
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)
思路
使用两个栈,stack_in栈模拟队列push,stack_out栈模拟队列pop
pop时,如果stack_out空栈,将stack_in栈依次pop到stack_out中
然后stack_out再pop
class MyQueue:
def __init__(self):
# 使用两个栈,stack_in栈模拟队列push,stack_out栈模拟队列pop
# pop时,如果stackstack_out空栈,将stack_in栈依次pop到stack_out中
# 然后stack_out再pop
self.stack_in = []
self.stack_out = []
def push(self, x: int) -> None:
self.stack_in.append(x)
def pop(self) -> int:
if not self.stack_out:
while self.stack_in:
self.stack_out.append(self.stack_in.pop())
return self.stack_out.pop()
def peek(self) -> int:
if not self.stack_out:
while self.stack_in:
self.stack_out.append(self.stack_in.pop())
return self.stack_out[-1]
def empty(self) -> bool:
return not self.stack_in and not self.stack_out
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。