标签:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
比较直观。用一个min stack专门存放最小值,如果有比它小或是相等的(有多个平行的最小值都要单独存放,否则pop后会出问题),
则存放其到minstack.
Java code:
class MinStack { Stack<Integer> elements = new Stack<Integer>(); Stack<Integer> minStack = new Stack<Integer>(); public void push(int x) { elements.push(x); if(minStack.isEmpty() || x <= minStack.peek()){ minStack.push(x); } } public void pop() { if(elements.isEmpty()){ return; } if((int)elements.peek() == (int)(minStack.peek())){ minStack.pop(); } elements.pop(); } public int top() { return elements.peek(); } public int getMin() { return minStack.peek(); } }
Reference:
1. http://www.cnblogs.com/yuzhangcmu/p/4106783.html
标签:
原文地址:http://www.cnblogs.com/anne-vista/p/4865637.html