设计一个有getMin功能的栈 (python)
题目:
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
要求:
1、pop、push、getMin操作的时间复杂度都是O(1)
2、设计的栈类型可以使用现成的栈结构
解决办法:
使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为stackData; 另一个栈用于保存每一步的最小值,这个栈记为stackMin。具体实现方式如下:
1 同步压入 1
2 重复压入 1 1
1 同步压入 1
5 重复压入3 3
4 重复压入3 3
3 同步压入 3
stackData stackMin
class Stack():def __init__(self):self.item = []def pop(self):if len(self.item)==0:return "the Stack is empty"else:self.item.pop()def push(self,item):self.item.append(item)def peek(self):return self.item[len(self.item)-1]class MyStack():def __init__(self):self.stackData = Stack()self.stackMin = Stack()def push(self,num):if len(self.stackMin.item) == 0:self.stackMin.push(num)elif num < self.getmin():self.stackMin.push(num)else:newnum = self.stackMin.peek()self.stackMin.push(newnum)self.stackData.push(num)def pop(self):if len(self.stackData.item)==0:return "the stackData is empty"self.stackMin.item.pop()return self.stackData.item.pop()def getmin(self):if len(self.stackMin.item) == 0:return "the stackMin is empty"return self.stackMin.peek()s =MyStack()s.push(3)
s.push(4)
s.push(5)
s.push(1)
s.push(2)
s.push(1)s.stackData.item
s.stackMin.item
设计一个有getMin功能的栈 (python)相关推荐
- 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈
题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...
- 设计一个带有getmin功能的栈,保证时间复杂度在O(1)
2017-06-22 20:56:10 需要得到最小值,最简单的思路就是遍历一遍求出最小值.但是这样的时间复杂度会是O(n),不满足O(1)的要求.于是想到在建立一个栈来保存最小值. 具体操作是建立 ...
- 栈和队列之设计一个有getMin(得到最小值)功能的栈
有2中方案,分别用类和内部类实现了 import java.util.Stack;/*** @author chenyu 第一种设计:* 题目:设计一个有getMin功能的栈,设计一个特殊的栈,在实现 ...
- LeetCode 1381. 设计一个支持增量操作的栈(deque/数组)
1. 题目 请你设计一个支持下述操作的栈. 实现自定义栈类 CustomStack : CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容 ...
- 1381. 设计一个支持增量操作的栈
2020-05-11 1.题目描述 设计一个支持增量操作的栈 2.题解 使用vector在进行增量操作的时候会方便一些,vector支持push_back.pop_back.empty操作. 3.代码 ...
- LeetCode 5357. 设计一个支持增量操作的栈
5357. 设计一个支持增量操作的栈 思路:用数组实现即可 class CustomStack { public:CustomStack(int maxSize) {fill(a,a+1001,-1) ...
- LeetCode 2296. 设计一个文本编辑器(双栈)
文章目录 1. 题目 2. 解题 1. 题目 请你设计一个带光标的文本编辑器,它可以实现以下功能: 添加:在光标所在处添加文本. 删除:在光标所在处删除文本(模拟键盘的删除键). 移动:将光标往左或者 ...
- 栈与队列1——设计getMin功能的栈
题目 设计栈,实现基本功能的前提下,实现返回栈内最小元素的功能 要求 1.push,pop,getmin()复杂度为O(1) 2.允许使用现成栈结构 解决思路 使用两个栈,stackData和stac ...
- 常考数据结构与算法:设计getMin功能的栈
题目描述 实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 示例1 输入 [[1,3],[1,2],[1,1],[3],[2],[3]] 返回值 [1,2] 备注: 有 ...
最新文章
- CUDA 11功能清单
- redis安装及用Redis Desktop Manager连接Redis
- 全球与中国人脸语音生物识别市场”十四“五规模状况与前景趋势分析报告2021-2027年版
- 机器学习中的算法-支持向量机(SVM)基础
- 稳定币GUSD的优劣势分析
- 大工18秋计算机应用基础1,大工18秋《计算机应用基础》在线测试1答案.pdf
- 试题 15 枚举n-m之间的所有质数(质数)
- 转帖一则——从医学角度论成熟
- java面试——多线程与并发
- win10系统无法登录ftp服务器失败,win10电脑下ftp连接失败怎么解决
- linux病毒扫描工具,linux病毒扫描工具ClamAV使用
- vue上线后图片不显示_vue页面中图片不显示解决
- 一张图带你了解游戏程序员的学习之路
- Oracle Spatial 空间分析之缓冲区分析
- 全球及中国车载定位模块行业发展格局与运营动向分析报告2022版
- c语言编程题会议室安排,C语言编程题:会议室安排
- 个人介绍静态网页【附源码】初学者的期中作业
- wlacm一笔画问题(图的遍历) 题解
- oracle sql查询取整,Oracle SQL语句操作数字:取整、四舍五入及格式化
- 护眼色的RGB值 和 颜色代码
热门文章
- Swift 3.1新改动
- 使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
- 二维树状数组 BZOJ 1452 [JSOI2009]Count
- WordPress数据库及各表结构
- Linux 增大Swap
- 【HoorayOS】开源的Web桌面应用框架(第二版 v120311)
- JQuery学习笔记 [Ajax] (6-2)
- 计算机中丢失sense3.dll,sense3.dll
- ajax静态页面实例,AJAX实例:Ajax实现静态页面分页
- 三星note4安装linux,Leanote Ubuntu 源码安装