《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈
题目
实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作
要求
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功能的栈相关推荐
- 《程序员代码面试指南第二版》Python实现(个人读书笔记)
说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...
- [读书笔记]《程序员代码面试指南》
栈和队列: 1.设计一个有getMin功能的栈 题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O( ...
- 程序员代码面试指南第二版 4.猫狗队列
welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...
- 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档
前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...
- 面向程序员的数据挖掘指南-----第一章:简介
内容: 寻找事物 本书结构 阅读完本书后你可以做些什么? 为什么数据挖掘很重要?哪些内容可以为我所用? 标题里的"Numerati的古老艺术"是什么意思? 序 如果你每天都能重复做 ...
- 程序员代码面试指南 CD101 单调栈结构
题目链接:点击这里 首先要明确的是,栈中存放的是索引. 扫描一遍数组元素,时刻保持从栈底到栈顶索引对应的数组元素是单调递增的. 当一个元素可以压入栈时,意味着此时的栈顶元素就是左边第一个比它小的元素. ...
- 设计一个带有getmin功能的栈,保证时间复杂度在O(1)
2017-06-22 20:56:10 需要得到最小值,最简单的思路就是遍历一遍求出最小值.但是这样的时间复杂度会是O(n),不满足O(1)的要求.于是想到在建立一个栈来保存最小值. 具体操作是建立 ...
- 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...
题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html
- 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体
准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...
最新文章
- GCLGP | 图卷积高斯过程
- 音乐会的等待-单调栈
- python列表的索引算法_Python-确定列表是否对称的算法
- e4a服务器文件,e4a链接网站服务器
- jeecg社区第11期导师架构学习班开始报名了
- windows下成功安装XGBOOST
- sae nodejs mysql_通过新浪云部署NideShop微信小程序商城(基于Node.js+MySQL+ThinkJS)
- 笔试12:Bootstrap知识
- python爬虫猫眼电影TOP100(爬虫入门基础,同步入库)
- 服务器修改硬盘顺序,服务器硬盘阵列硬盘顺序
- 认清有毒的矿物质元素 预防中毒
- PP视频(PPTV聚力)web接口分析
- 用c语言解参数积分,C语言求定积分的通用函数
- win10系统还原失败错误0x80070091的解决方法
- (PS教程)01-用PS给证件照排版
- 四路监控物联卡赋能卡友行车安全
- Mysql单表查询和多表查询
- 【Linux操作系统】——网络配置与SSH远程
- 日文身体部位单词_20161009
- Aspose.word java 实现word转pdf
热门文章
- jQuery源码研究分析学习笔记-jQuery.buildFragment()(六)
- 你不知道你不懂javascript
- matlab采样序列幅频特性,数字信号处理课设计指导书20130530.doc
- php页面价格排序代码,php 数组动态添加实现代码(最土团购系统的价格排序)
- Pandas DataFrame 取消科学计数法打印
- (转!)Netdata---Linux系统性能实时监控平台部署
- Educational Codeforces Round 60 D. Magic Gems
- 缓冲区,粘包,解决粘包的方法,
- 13章 购买服务器和域名绑定
- ES6入门——类的概念