2025/3/2 【栈与队列】LeetCode232. 用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

思想:用下面的两个栈模拟队列

 

复制代码
from collections import deque
class MyQueue:

    def __init__(self):
        # in主要负责push,out主要负责pop
        self.stackin = []
        self.stackout = []

    def push(self, x: int) -> None:
        # 有新元素进来,就往in里面push
        self.stackin.append(x)

    def pop(self) -> int:
        # 队列不为空时,如果out为空,则把in中元素按个pop出,append到out里
        # 再从out里pop出最后一个元素(实际为in的第一个元素)
        # 如果out不为空,直接pop
        if self.empty():
            return None
        
        if not self.stackout:
            for _ in range(len(self.stackin)):
                self.stackout.append(self.stackin.pop())
        
        return self.stackout.pop()

    def peek(self) -> int:
        # pop出MyQueue对象的头元素,再append回out里
        ans = self.pop()
        self.stackout.append(ans)
        return ans

    def empty(self) -> bool:
        # 只要in或者out有元素,说明队列不为空
        return not(self.stackin or self.stackout)
        
        


# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
复制代码

 

posted @   axuu  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示