题目

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

要求

1.  pop、push、getMin操作时间复杂度都是O(1)
2.  设计的栈类型可以使用现成的栈结构

java代码

/*** @Description:设计一个有getMin功能的栈* @Author: lizhouwei* @CreateDate: 2018/4/5 9:54* @Modify by:* @ModifyDate:
*/
public class Chapter1_1 {private Stack<Integer> stackData;//数据栈,压栈的数据private Stack<Integer> stackMin;//辅助栈,从栈顶到栈底 由小到大有序的数据public Chapter1_1(){stackData = new Stack<Integer>(); //在new的时候 初始化stackData内存空间stackMin = new Stack<Integer>(); //在new的时候 初始化stackMin内存空间}//压入栈中public void push(int value){//将数据压入栈中stackData.push(value);//如果辅助栈是空的则直接压入if(stackMin.isEmpty()){stackMin.push(value);}else if(value<stackMin.peek()){//value比栈顶元素小stackMin.push(value);}}//弹栈public int pop(){//如果数据栈中已空,则 返回 -1if(stackData.isEmpty()){return -1;}//数据栈弹出int value =  stackData.pop();if(value ==stackMin.peek()){stackMin.pop();}return value;}//获取最小值public int getMin(){//获取辅助栈顶元素即可return stackMin.peek();}//测试public static void main(String[] args){Chapter1_1 chapter = new Chapter1_1();for(int i=10,j=11;i<20;i=i+2,j=j+10) {chapter.push(j);chapter.push(i);}System.out.println(chapter.getMin());while(!chapter.stackData.isEmpty()){System.out.print(chapter.stackData.pop()+" ");}}
}

转载于:https://www.cnblogs.com/lizhouwei/p/8721194.html

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

  1. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  2. [读书笔记]《程序员代码面试指南》

    栈和队列: 1.设计一个有getMin功能的栈 题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O( ...

  3. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  4. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  5. 面向程序员的数据挖掘指南-----第一章:简介

    内容: 寻找事物 本书结构 阅读完本书后你可以做些什么? 为什么数据挖掘很重要?哪些内容可以为我所用? 标题里的"Numerati的古老艺术"是什么意思? 序 如果你每天都能重复做 ...

  6. 程序员代码面试指南 CD101 单调栈结构

    题目链接:点击这里 首先要明确的是,栈中存放的是索引. 扫描一遍数组元素,时刻保持从栈底到栈顶索引对应的数组元素是单调递增的. 当一个元素可以压入栈时,意味着此时的栈顶元素就是左边第一个比它小的元素. ...

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

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

  8. 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...

    题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html

  9. 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体

    准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...

最新文章

  1. GCLGP | 图卷积高斯过程
  2. 音乐会的等待-单调栈
  3. python列表的索引算法_Python-确定列表是否对称的算法
  4. e4a服务器文件,e4a链接网站服务器
  5. jeecg社区第11期导师架构学习班开始报名了
  6. windows下成功安装XGBOOST
  7. sae nodejs mysql_通过新浪云部署NideShop微信小程序商城(基于Node.js+MySQL+ThinkJS)
  8. 笔试12:Bootstrap知识
  9. python爬虫猫眼电影TOP100(爬虫入门基础,同步入库)
  10. 服务器修改硬盘顺序,服务器硬盘阵列硬盘顺序
  11. 认清有毒的矿物质元素 预防中毒
  12. PP视频(PPTV聚力)web接口分析
  13. 用c语言解参数积分,C语言求定积分的通用函数
  14. win10系统还原失败错误0x80070091的解决方法
  15. (PS教程)01-用PS给证件照排版
  16. 四路监控物联卡赋能卡友行车安全
  17. Mysql单表查询和多表查询
  18. 【Linux操作系统】——网络配置与SSH远程
  19. 日文身体部位单词_20161009
  20. Aspose.word java 实现word转pdf

热门文章

  1. jQuery源码研究分析学习笔记-jQuery.buildFragment()(六)
  2. 你不知道你不懂javascript
  3. matlab采样序列幅频特性,数字信号处理课设计指导书20130530.doc
  4. php页面价格排序代码,php 数组动态添加实现代码(最土团购系统的价格排序)
  5. Pandas DataFrame 取消科学计数法打印
  6. (转!)Netdata---Linux系统性能实时监控平台部署
  7. Educational Codeforces Round 60 D. Magic Gems
  8. 缓冲区,粘包,解决粘包的方法,
  9. 13章 购买服务器和域名绑定
  10. ES6入门——类的概念