232 用栈实现队列

题目 232 用栈实现队列

思路

使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈,这里要注意输入栈和输出栈的关系。

注意:判断队列是否为空,只有输入栈和输出栈同时为空时队列才为空

代码

class MyQueue:
def __init__(self):
self.stackin = []
self.stackout = []
def push(self, x: int) -> None:
self.stackin.append(x)
def pop(self) -> int:
if self.empty(): # 先判断是否为空,为空返回None,不为空了再做pop操作
return None
if self.stackout: # 判断out是否有元素
return self.stackout.pop()
else: # 如果out没有元素,则把in里所有的元素都添加到out中
while self.stackin:
self.stackout.append(self.stackin.pop())
return self.stackout.pop()
def peek(self) -> int:
res = self.pop()
self.stackout.append(res)
return res
def empty(self) -> bool:
# 只要in或者out都有元素就说明栈不为空
# return not (self.stackin or self.stackout) # 正确的
# return self.stackin is None and self.stackout is None # 错误的,[],None是fasle,但是[]不等于None
return self.stackin == [] and self.stackout == []
posted @   时光如你般美好  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示