题目:

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作

要求:

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)相关推荐

  1. 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈

    题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...

  2. 设计一个带有getmin功能的栈,保证时间复杂度在O(1)

    2017-06-22  20:56:10 需要得到最小值,最简单的思路就是遍历一遍求出最小值.但是这样的时间复杂度会是O(n),不满足O(1)的要求.于是想到在建立一个栈来保存最小值. 具体操作是建立 ...

  3. 栈和队列之设计一个有getMin(得到最小值)功能的栈

    有2中方案,分别用类和内部类实现了 import java.util.Stack;/*** @author chenyu 第一种设计:* 题目:设计一个有getMin功能的栈,设计一个特殊的栈,在实现 ...

  4. LeetCode 1381. 设计一个支持增量操作的栈(deque/数组)

    1. 题目 请你设计一个支持下述操作的栈. 实现自定义栈类 CustomStack : CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容 ...

  5. 1381. 设计一个支持增量操作的栈

    2020-05-11 1.题目描述 设计一个支持增量操作的栈 2.题解 使用vector在进行增量操作的时候会方便一些,vector支持push_back.pop_back.empty操作. 3.代码 ...

  6. LeetCode 5357. 设计一个支持增量操作的栈

    5357. 设计一个支持增量操作的栈 思路:用数组实现即可 class CustomStack { public:CustomStack(int maxSize) {fill(a,a+1001,-1) ...

  7. LeetCode 2296. 设计一个文本编辑器(双栈)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个带光标的文本编辑器,它可以实现以下功能: 添加:在光标所在处添加文本. 删除:在光标所在处删除文本(模拟键盘的删除键). 移动:将光标往左或者 ...

  8. 栈与队列1——设计getMin功能的栈

    题目 设计栈,实现基本功能的前提下,实现返回栈内最小元素的功能 要求 1.push,pop,getmin()复杂度为O(1) 2.允许使用现成栈结构 解决思路 使用两个栈,stackData和stac ...

  9. 常考数据结构与算法:设计getMin功能的栈

    题目描述 实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 示例1 输入 [[1,3],[1,2],[1,1],[3],[2],[3]] 返回值 [1,2] 备注: 有 ...

最新文章

  1. CUDA 11功能清单
  2. redis安装及用Redis Desktop Manager连接Redis
  3. 全球与中国人脸语音生物识别市场”十四“五规模状况与前景趋势分析报告2021-2027年版
  4. 机器学习中的算法-支持向量机(SVM)基础
  5. 稳定币GUSD的优劣势分析
  6. 大工18秋计算机应用基础1,大工18秋《计算机应用基础》在线测试1答案.pdf
  7. 试题 15 枚举n-m之间的所有质数(质数)
  8. 转帖一则——从医学角度论成熟
  9. java面试——多线程与并发
  10. win10系统无法登录ftp服务器失败,win10电脑下ftp连接失败怎么解决
  11. linux病毒扫描工具,linux病毒扫描工具ClamAV使用
  12. vue上线后图片不显示_vue页面中图片不显示解决
  13. 一张图带你了解游戏程序员的学习之路
  14. Oracle Spatial 空间分析之缓冲区分析
  15. 全球及中国车载定位模块行业发展格局与运营动向分析报告2022版
  16. c语言编程题会议室安排,C语言编程题:会议室安排
  17. 个人介绍静态网页【附源码】初学者的期中作业
  18. wlacm一笔画问题(图的遍历) 题解
  19. oracle sql查询取整,Oracle SQL语句操作数字:取整、四舍五入及格式化
  20. 护眼色的RGB值 和 颜色代码

热门文章

  1. Swift 3.1新改动
  2. 使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
  3. 二维树状数组 BZOJ 1452 [JSOI2009]Count
  4. WordPress数据库及各表结构
  5. Linux 增大Swap
  6. 【HoorayOS】开源的Web桌面应用框架(第二版 v120311)
  7. JQuery学习笔记 [Ajax] (6-2)
  8. 计算机中丢失sense3.dll,sense3.dll
  9. ajax静态页面实例,AJAX实例:Ajax实现静态页面分页
  10. 三星note4安装linux,Leanote Ubuntu 源码安装