package com.coding.basic.stack; /** * 设计一个栈,支持栈的push和pop操作,以及第三种操作findMin, 它返回改数据结构中的最小元素 * finMin操作最坏的情形下时间复杂度应该是O(1) , 简单来讲,操作一次就可以得到最小值 * @author liuxin * */ public class QuickMinStack { Stack stack=null; Stack min=null; public QuickMinStack() { stack=new Stack(); min=new Stack(); } public void push(int data){ if (stack.isEmpty()) { int copy=data; push(data); push(copy); } else { if (data<(int)min.peek()) { int copy=data; push(data); push(copy); } else { stack.push(data); min.push(min.peek()); } } } public int pop(){ if (stack.isEmpty()) { throw(new NullPointerException()); } min.pop(); return (int) stack.pop(); } public int findMin(){ return (int) min.peek(); } }