LeetCode:232(Python)—— 用栈实现队列(简单)

用栈实现队列

概述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty)。

输入:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]

方法一:双栈

思路:一个压栈,一个弹栈即可。

# 双栈
# 一个压栈,一个弹栈
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 None
        if self.stack_out:
            return self.stack_out.pop()
        else:
            for i in range(len(self.stack_in)):
                self.stack_out.append(self.stack_in.pop())
            return self.stack_out.pop()
    def peek(self) -> int:
        ans = self.pop()
        self.stack_out.append(ans)
        return ans
    def empty(self) -> bool:
        return not (self.stack_in or self.stack_out)

总结

用队列实现栈,用栈实现队列

你可能感兴趣的:(python,开发语言,数据结构,算法,面试)