题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(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

Ethan
140 声望11 粉丝

水平较低,只是记录,谨慎参阅


引用和评论

0 条评论