题目

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