package dataStructure_9_Stack; import java.util.Stack; /** * ���һ��ջ��֧��ջ��push��pop�������Լ������ֲ���findMin, �����ظ����ݽṹ�е���СԪ�� * finMin�������������ʱ�临�Ӷ�Ӧ����O(1) �� ������������һ�ξͿ��Եõ���Сֵ * @author liuxin * */ public class QuickMinStack { Stack<Integer> stack = new Stack<Integer>(); Stack<Integer> temp = new Stack<Integer>(); public void push(int data){ if(stack.isEmpty()){ stack.push(data); temp.push(data); }else{ if(data<temp.peek()){ stack.push(data); temp.push(data); }else{ stack.push(data); } } } public int pop(){ checkStackIsEmpty(); int i = 0; if(stack.pop() == temp.peek()){ temp.pop(); i = stack.pop(); }else{ i = stack.pop(); } return i; } private void checkStackIsEmpty() { if(stack.isEmpty()){ throw new RuntimeException("ջΪ��"); } } public int findMin(){ return temp.peek(); } }