题目:
Design a stack that supports push, pop, top, and retrieving the minimum element in
constant time. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – Get the top element. getMin() – Retrieve the minimum element in the stack
解答:
1 public class MinStack { 2 private Stackstack = new Stack<>(); 3 private Stack minStack = new Stack<>(); 4 5 public void push(int x) { 6 stack.push(x); 7 if(minStack.isEmpty() || x <= minStack.peek()) { 8 minStack.push(x); 9 }10 }11 12 public void pop() {13 if(stack.pop().equals(minStack.peek())) {14 minStack.pop();15 }16 }17 18 public int top() {19 return stack.peek();20 }21 22 public int getMin() {23 return minStack.peek();24 }25 }