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