package main.coding_170507; import java.util.ArrayList; /** * 设计一个栈,支持栈的push和pop操作,以及第三种操作findMin, 它返回改数据结构中的最小元素 * finMin操作最坏的情形下时间复杂度应该是O(1) , 简单来讲,操作一次就可以得到最小值 */ public class QuickMinStack { private ArrayList<Integer> stack = new ArrayList<>(); private ArrayList<Integer> minStack= new ArrayList<>(); public void push(int data) { stack.add(data); if(minStack.size()==0){ minStack.add(data); }else{ if(minStack.get(minStack.size()-1)>data){ minStack.add(data); } } } public int pop() { int data = stack.remove(stack.size()-1); if(data==minStack.get(minStack.size()-1)){ minStack.remove(minStack.size()-1); } return data; } public int findMin() { return minStack.get(minStack.size()-1); } }