Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
class MinStack { Stack<Integer> stack = new Stack<>(); Stack<Integer> minStack = new Stack<>(); public void push(int x) { stack.push(x); if (minStack.isEmpty() || minStack.peek() >= x) { minStack.push(x); } } public void pop() { if (stack.pop()==minStack.peek()) minStack.pop(); } public int top() { return stack.peek(); } public int getMin() { return minStack.peek(); } }
原文地址:http://blog.csdn.net/guorudi/article/details/43987417