232. 用栈实现队列 - 力扣(LeetCode)
代码随想录 (programmercarl.com)
思想:用下面的两个栈模拟队列
from collections import deque class MyQueue:def __init__(self):# in主要负责push,out主要负责popself.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不为空,直接popif self.empty():return Noneif 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 ansdef 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()