剑指offer-python刷题-用两个栈实现队列
发布日期:2021-07-28 12:03:07
浏览次数:3
分类:技术文章
本文共 927 字,大约阅读时间需要 3 分钟。
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
栈:先入后出,push操作将元素添加到队列的末尾,pop操作删除最末端的元素。
队列:先入先出,push操作将元素添加到队列的末尾,pop操作删除最前端的元素。
python中没有栈这种数据结构,因此选择列表结构,列表中的append方法表示在列表末尾添加一个元素,pop方法表示删掉列表的最后一个元素并将其输出。正好对应了栈的先入后出的结构。
a = [1,2,3,4,5]a.append(6)print(a)#[1,2,3,4,5,6]a.pop()#6print(a)#[1,2,3,4,5]
使用列表的append和pop表示队列的push和pop操作
class Solution: def __init__(self): #初始化两个空列表,用于表示两个栈结构 self.stack1 = [] self.stack2 = [] def push(self, node): # 队列的push操作将node添加到某个栈的末尾 self.stack1.append(node) def pop(self): # 队列的pop操作将栈的最前端元素返回出来 # 当栈二不为空时,直接弹出其最后一个元素(不太明白这部分存在的意义,但是没有的话显示错误) if len(self.stack2) > 0: return self.stack2.pop() # 将栈1中的所有元素倒序装到栈2,这样栈2的pop就可以弹出栈1的第一个元素 while self.stack1: self.stack2.append(self.stack1.pop()) if len(self.stack2) > 0: return self.stack2.pop()
个人心得:
因为数据结构了解的不清晰,光看题目根本不知道要干什么...
转载地址:https://blog.csdn.net/sinat_42437278/article/details/117372495 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月21日 16时43分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
android 根据时间获取时间对应的星期
2019-04-27
Unparseable date: "2015-8-8"
2019-04-27
SimpleDateFormat 日期,时间格式转化
2019-04-27
Cannot format given Object as a Date
2019-04-27
android 键盘右下角回车改为搜索
2019-04-27
svn: Working copy " " locked
2019-04-27
NET::ERR_CACHE_MISS
2019-04-27
Fragment onViewCreated 的作用
2019-04-27
4G EPS 第四代移动通信系统
2019-04-27
用 C 语言开发一门编程语言 — 变量元素设计
2019-04-27
Linux 操作系统原理 — 文件系统 — 虚拟文件系统
2019-04-27
Kubernetes — 生产环境架构简述
2019-04-27
Kong APIGW — Overview
2019-04-27
FD.io/VPP — QoS — DPDK Hqos
2019-04-27
Kubernetes — Kubespray 开箱即用的部署工具
2019-04-27
Ansible — Inventory 清单文件
2019-04-27
CentOS7 通过 YUM 升级 VIM8
2019-04-27
Python3 configparser模块的安装、基础读写ini文件和字典的互转
2019-04-27
A. Donut Shops(分类模拟)
2019-04-27