首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java兑现带min()方法的栈

2012-10-08 
java实现带min()方法的栈定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以

java实现带min()方法的栈

定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。

?

感谢csdn July整理题目和答案http://blog.csdn.net/v_JULY_v/article/details/6057286

?

这里我写的第二题的java 代码实现。

实现原理

入栈时,比较辅助栈栈顶元素大小,如果新增元素小于等于辅助栈栈顶元素,辅助栈同时入栈。出栈时,如果出栈元素等于辅助栈栈顶元素(即出栈元素为最小值),辅助栈同时出栈

例如压栈 5,2,2,1,6,3

栈???? 辅助栈

5???????? 5

2???????? 2

2???????? 2

1???????? 1

6???????

3

?

出栈时

3??????????1

6????????? 1

1??????????2

2????????? 2

2????????? 5

5???????? null

?

一、定义节点类,添加了遍历和添加方法,在本题目中使用不到

package cn.edu.cqupt.mircrosoft100;public class MinStack {private AssistStack assistStack=new AssistStack();//辅助栈,实现O(1)min函数private Node top;public void push(int value){Node add = new Node(value);if(null==top){top=add;assistStack.push(value);return;}add.setNext(top);top=add;refresh();}public void refresh(){int temp = top.getValue();if(temp<=assistStack.getTop().getValue())assistStack.push(temp);}public Integer pop(){Integer temp = top.getValue();if(null==temp)return null;if(temp==assistStack.getTop().getValue())assistStack.pop();top=top.getNext();return temp;}public Integer getMin(){if(null==assistStack.getTop())return null;return assistStack.getTop().getValue();}public static void main(String args[]){MinStack minStack =new MinStack();minStack.push(5);minStack.push(2);minStack.push(3);minStack.push(3);minStack.push(6);System.out.println("min:"+minStack.getMin());System.out.println("pop:"+minStack.pop()); System.out.println("min:"+minStack.getMin());System.out.println("pop:"+minStack.pop()); System.out.println("min:"+minStack.getMin());System.out.println("pop:"+minStack.pop()); System.out.println("min:"+minStack.getMin());System.out.println("pop:"+minStack.pop()); System.out.println("min:"+minStack.getMin());System.out.println("pop:"+minStack.pop()); System.out.println("min:"+minStack.getMin());}}

?

热点排行