《程序员代码面试指南》第一章 栈和队列 设计一个有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(){
//如果数据栈中已空,则 返回 -1
if(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()+" ");
}
}
}
《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈的更多相关文章
- 算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈
刚入手了一本<程序员代码面试指南>,书中题目的代码都是 Java 实现的,琢磨着把这些代码用 PHP 敲一遍,加深印象. 题目:设计一个有 getMin 功能的栈 —— 实现一个特殊的栈, ...
- 栈和队列----设计一个有getMin功能的栈
设计一个有getMin功能的栈 设计一个具有getMin功能的栈,可以返回栈中的最小的元素,可以使用现有的栈的数据结构,要求pop/push/getMin操作的时间复杂度是O(1). package ...
- 程序员代码面试指南:IT名企算法与数据结构题目最优解
第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一 ...
- 常见面试算法题JS实现-设计一个有getMin功能的栈
前言: 已经确定工作了-下周一正式入职,按理说应该是可以好好浪荡一周的,但是内心总是不安,总觉得自己这个水平真的太菜了,还是趁着现在有自己的时间,赶紧多看看书,多学习学习吧orz所以把之前校招买的书, ...
- 设计一个有getMin功能的栈
[说明]: 本文是左程云老师所著的<程序员面试代码指南>第一章中“设计一个有getMin功能的栈”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说明 ...
- 程序员代码面试指南 IT名企算法与数据结构题目最优解
原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮 ...
- 栈和队列问题:设计一个有 getMin 功能的栈
[知识点] 栈是一个先进后出(FILO-First In Last Out)的数据结构,队列是一种先进先出(FIFO-First In First Out)的数据结构. [题目] 实现一个特殊的栈,在 ...
- 设计一个有getMin功能的栈(1)
题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O(1) 2.设计的栈类型可以输用现成的栈结构 解答 ...
- 设计一个带有getmin功能的栈,保证时间复杂度在O(1)
2017-06-22 20:56:10 需要得到最小值,最简单的思路就是遍历一遍求出最小值.但是这样的时间复杂度会是O(n),不满足O(1)的要求.于是想到在建立一个栈来保存最小值. 具体操作是建立 ...
随机推荐
- Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
使用Nginx限制单个IP的并发连接数能够减少一些采集程序或者DDOS的攻击. 再lnmp的nginx配置中已经添加了部分代码,但是是注释掉的,可以编辑/usr/local/nginx/conf/ng ...
- Solution to Triangle by Codility
question: https://codility.com/programmers/lessons/4 we need two parts to prove our solution. on one ...
- <LeetCode OJ> 155. Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- Android OOM的解决方式
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图. 由于这些函数在完毕decode后,终于都是通过ja ...
- Apollo配置中心解惑(一):关于一个portal管理多个环境,要求环境相互之间不影响,独立
关于作者的回答很官方,不太懂: https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD% ...
- ctrip-apollo windows环境部署
https://blog.csdn.net/u010286334/article/details/78389484转载过来的方法,尝试了没有成功,不晓得哪里错了,无法打包portal访问 1.下载源码 ...
- 基于JT/T 1078协议设计和开发部标视频服务器
交通部与2016年10月份推出了JT/T 1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>.该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局 ...
- vue实践---根据不同环境,自动转换请求的url地址
一般的项目环境分为:本地环境,测试环境,预发环境,正式环境. 这些环境的域名一般是一样的, 前端请求接口的url也会随着这些环境的变化而改变,手动修改有点麻烦,所以想个办法,让请求的地址根据域名改变而 ...
- PHP-Manual的学习----【序言】
2017年6月27日16:57:32 学习资料:2015-PHP-Manual 打好坚实的基础是做任何事的前提 序言: 笔记: 1.PHP,即"PHP: Hypertext Preproce ...
- 记录-MySQL中的事件调度Event Scheduler
下面是自己的实例 /*查询event是否开启(查询结果Off为关闭 On为开启)*/show variables like '%sche%'; /*开启/关闭命令(1开启--0关闭)*/set glo ...