import java.util.Stack;
/**
* 设计栈的数据结构,实现获得栈中最小元素min的函数,使得pop push getMin的时间 复杂度为o(1)
* @author zhijian
*
*/
public class Code21 {
class MyStack {
private Stack<Integer> dataStack;
private Stack<Integer> minStack;
public MyStack() {
dataStack = new Stack<Integer>();
minStack = new Stack<Integer>();
}
public void push(Integer item) {
dataStack.push(item);
if (minStack.size() == 0 || item <= minStack.lastElement())
minStack.push(item);
else
minStack.push(minStack.lastElement());
}
public Integer pop() {
if (dataStack.size() > 0) {
minStack.pop();
return dataStack.pop();
} else
return null;
}
public Integer getMin() {
if (minStack.size() > 0) {
return minStack.lastElement();
} else
return null;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Code21 code21 = new Code21();
MyStack myStack = code21.new MyStack();
myStack.push(8);
myStack.push(3);
myStack.push(2);
myStack.push(5);
myStack.push(4);
System.out.println(myStack.getMin());
myStack.pop();
System.out.println(myStack.getMin());
myStack.pop();
System.out.println(myStack.getMin());
myStack.pop();
System.out.println(myStack.getMin());
myStack.pop();
}
}