Q21:包含min函数的栈
来源:互联网 发布:eviews非线性回归算法 编辑:程序博客网 时间:2024/06/03 19:55
importjava.util.Stack;
publicclass Q21 extendsStack{
/**
* 题目:包含min函数的栈
* 题目说明:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中调用min,push,pop的时间复杂度都是O(1)。
* 解题思路:通过设置辅助栈来实现。当输入的值小于栈顶元素时,则进栈,辅助进栈;当输入的值大于栈顶时,进栈,辅助栈中仍然让栈顶元素重复一次入栈。取最小元素时从辅助栈中取值。
*/
publicstatic void main(String[] args) {
Q21 test=new Q21();
test.push(3);
test.push(2);
test.push(1);
test.push(4);
test.push(5);
System.out.println(test.min());
System.out.println(test.pop());
}
private Stack<Integer>minStack = new Stack<Integer>();//辅助栈,记录最小值
private Stack<Integer>valueStack = new Stack<Integer>();
//实现入栈操作
publicvoid push(Integer item){
valueStack.push(item);
if((minStack.isEmpty()) || (item <minStack.pop())){
minStack.push(item);//当输入的值小于栈顶元素时,压入辅助栈
}else{
minStack.push(valueStack.pop());//当输入的值大于栈顶元素时,压入辅助栈的是辅助栈的栈顶。即:重新压入一次
}
}
//实现出栈操作
public Integer pop(){
if((minStack.isEmpty()) || (valueStack.isEmpty())){
returnnull;
}
minStack.pop();
returnvalueStack.pop();
}
//取栈中最小值,取辅助栈的栈顶元素
public Integer min(){
if(minStack.isEmpty()){
returnnull;
}
returnminStack.peek();//用于获取栈顶元素,但是仍然在栈顶中,不执行删除操作
}
}
- Q21:包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- android实现文件下载的几种方式
- scala基础36-List的map/flatmap/filter等操作
- 新建java项目使用this.classLoader.getResourceAsStream方法导入xml文件时报找不到文件原因
- 313. Super Ugly Number
- day6 POJ 3126 Prime Path
- Q21:包含min函数的栈
- 一个maven setting文件的配置
- poj 2631 Roads in the North (树的直径模板题)
- 分类(Category)使用
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
- 再谈文件中的不可见字符
- 51Nod-1095-Anigram单词
- Mac OS 安装PHP7
- Android开发整理