5、栈和队列——用两个栈实现队列(python版)
2023-09-11 14:20:01 时间
《剑指Offer》
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
栈:先进后出;队列:先进先出
若要想用两个栈实现队列的过程,可根据栈的特性,即先进后出,让一个栈用来进行存数,计为1号栈,可实现“入队”操作。
当想实现出队操作时,需要实现的效果是把1号栈中最开始存的数,即栈底元素先出,但我们发现当该栈进行取数据时,栈底元素只能最后出来,这时候就可以用另一个栈,计为2号栈,来将1号栈取出的数依次按顺序再存进来,1号栈中的栈底元素就变成了2号栈中的栈顶元素,当从2号栈中进行取数时,就实现了“出队操作”。
class Solution:
def __init__(self):
self.acceptStack = []
self.outputStack = []
def push(self, node):
# write code here
self.acceptStack.append(node)
def pop(self):
# return xx
if self.outputStack == []:
while self.acceptStack:
self.outputStack.append(self.acceptStack.pop())
if self.outputStack != []:
return self.outputStack.pop()
else:
return None
# 可以测试一下
solution = Solution()
solution.push(123)
solution.pop()
总结:由于栈的特殊操作性质,当对元素进行两次的存取时,就相当于实现了一个“逆置换“。
相关文章
- python各类项目模块记录
- python 获取有关访问者的浏览器的 细节
- Python脚本写端口扫描器(socket,python-nmap)
- How to run python interactive in current file's directory in Visual Studio Code? Python路径问题
- python魔法方法之-Python __repr__()方法:显示属性
- 软件——机器学习与Python,if __name__ == '__main__':函数
- Python零基础入门,2分钟带你了解python
- python中几种队列Queue用法区别
- Python pip安装第三方库的国内镜像
- 人生苦短,我用Python!为什么现在越来越多的人转行python?
- python强大之处在哪里?为什么那么多人喜欢Python?
- Python分享:python爬虫可以用来做什么?
- 【python实战】拒绝黄牛!我要用python原价冲周董演唱会~Python自动秒杀抢票脚本
- 155 python网络编程 - listen的队列长度
- 《 Python树莓派编程》——2.7 总结
- python 健康脚本
- 使用ANTLR做一个简单的Python SQL语法解析器
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- python常用的十进制、16进制之间的转换
- 《Python算法教程》——2.7 练习题
- python学习之OpenCV-Python模块的部分应用示例(生成素描图和动漫图)
- Excel WPS自动化之如何将多行合并为多列(Python源码含教程)
- 学python,自建ERP想法
- 【Python注意事项】如何理解python中间generator functions和yield表情
- Python:实现图片裁剪的两种方式——Pillow和OpenCV
- (17)python消息队列,python RabbitMQ
- python第三十二课——队列
- python提示警告InsecureRequestWarning
- 学习笔记(21):Python网络编程&并发编程-队列的使用