python 通过双栈实现队列
开始做法
# coding:utf-8# !/usr/bin/env python# Time: 2018/6/6 9:32# Author: sty# File: stack_queue.pyclass Solution():def __init__(self):self.stack1 = []self.stack2 = []def push(self, data):self.stack1.append(data)def pop(self):if len(self.stack1) == 0 and len(self.stack2) == 0:return []elif len(self.stack2) == 0:while len(self.stack1) != 0:self.stack2.append(self.stack1.pop())return self.stack2.pop()
优化做法
减少了一次stack2的入栈和出栈操作
class Solution():def __init__(self):self.stack1 = []self.stack2 = []def push(self, data):self.stack1.append(data)def pop(self):if len(self.stack1) == 0 and len(self.stack2) == 0:return []elif len(self.stack2) == 0:while len(self.stack1) != 1:self.stack2.append(self.stack1.pop())# 减少了一次stack2的入栈和出栈操作return self.stack1.pop()return self.stack2.pop()
全部操作合集
class MyQueue:def __init__(self):"""Initialize your data structure here."""self.stack1 = []self.stack2 = []def push(self, x):"""Push element x to the back of queue.:type x: int:rtype: void"""self.stack1.append(x)def pop(self):"""Removes the element from in front of queue and returns that element.:rtype: int"""if len(self.stack1) == 0 and len(self.stack2) == 0:return Noneelse:if len(self.stack2) == 0:while len(self.stack1) != 1:self.stack2.append(self.stack1.pop())return self.stack1.pop()else:return self.stack2.pop()def peek(self):"""Get the front element.:rtype: int"""if len(self.stack2) == 0 and len(self.stack1) == 0:return Noneelse:if len(self.stack2) == 0:return self.stack1[0]else:return self.stack2[-1]def empty(self):"""Returns whether the queue is empty.:rtype: bool"""if len(self.stack1) == 0 and len(self.stack2) == 0:return Trueelse:return False
参考文档
https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html
https://blog.csdn.net/slibra_L/article/details/78098683
https://leetcode.com/problems/implement-queue-using-stacks/description/
python 通过双栈实现队列相关推荐
- python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt
数据结构与算法:Python语言描述 栈和队列 迷宫问题 迷宫问题的特点: 存在一集可能位置,一些位置相互连通,一步可达 一个位置可能连通若干位置,出现向前探查的多种可能(有分支) 目标是找到一条路径 ...
- CLRS10.1-6练习 - 用双栈实现队列
双栈实现队列算法: 分别考虑队列两种操作入队和出队,我们假设使用栈s1 s2, s1用来模拟入队,s2用来模拟出队 入队: 入队操作直接执行s1.push即可 出队: 代码实现 1 package h ...
- python数据结构-栈和队列的实现
1.栈(后进先出(last in first out,LIFO)) 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出(LIFO,last-in-first-o ...
- 数据结构之—栈和队列
目录 引言 一.栈(stack) 1.栈的应用 2.栈的实现 二.队列 1.基础队列的实现 2.循环队列 编辑 1)概念 2)如何判断环形队列为空⭐ 总结:环形队列是否已满条件:(tail+1)%d ...
- python 栈和队列_python 栈和队列的基本实现
python中的列表结构可以用来实现栈和队列. [栈]: 栈是一种数据结构,具有先入后出的特点,并且栈的所有操作只能在某一端进行,能进行操作的一端的第一个元素称为栈顶,另一端的第一个元素称为栈底 栈的 ...
- Python数据结构与算法(二)栈和队列
本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...
- [转载] Python的双端队列deque
参考链接: Python中的双端队列DeQue Python的强大并不在于它的语法,而在于它的库,当你对各种数据结构感到苦恼时,Python提供了各种开箱即用的数据结构. 数据结构中最常讲授的数据结构 ...
- Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。
数据结构与算法入门 问题1:为什么要学习数据结构 如果说学习语文的最终目的是写小说的话,那么能不能在识字.组词.造句后就直接写小说了,肯定是不行的, 中间还有一个必经的阶段:就是写作 ...
- 数据结构与算法(Python版) | (6) 线性结构---队列、双端队列和列表
本专栏主要基于北大的数据结构与算法教程(Python版)进行整理,包括课程笔记和OJ作业. 课程链接 1. 队列抽象数据类型及Python实现 什么是队列? 队列是一种有次序的数据集合,其特征是: 1 ...
最新文章
- Ubuntu左边启动器移到底部及自动隐藏
- 转:Android之 MTP框架和流程分析
- mysql三个层次_数据库的基本结构三个层次
- 古老的SSM企业级应用
- 望岳物业APP开发过程
- python填写excel-python读写Excel
- conda重命名环境env
- vim编辑器之按键说明
- 通过BizTalk WCF适配器实现异构数据库/系统间的数据同步
- linux查看电脑硬件信息,Linux下查看电脑硬件配置【转】
- 杭电4510为什么时光不能倒流
- 在一家公司产生倦怠感,如何化解?
- 开发微信小程序 中遇到的坑 及解决方法
- C++基础语言知识大汇总(不断更新!!!)
- 《Google Android开发入门与实战》
- C++,获取当前工作路径
- 京东联盟的开放平台的Python客户端封装
- 【ESAPI】WEB安全ESAPI使用
- 5种最热门编程语言的优缺点
- git恢复误删代码或文件