题目
请你仅应用两个栈实现先入先出队列。队列该当反对个别队列反对的所有操作(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