標籤:min棧
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.Example:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> Returns -3.minStack.pop();minStack.top(); --> Returns 0.minStack.getMin(); --> Returns -2.Subscribe to see which companies asked this question.
題意:設計一個有MIN函數的棧。
public class MinStack { private Stack<Integer> stackData; private Stack<Integer> stackMin; /** initialize your data structure here. */ public MinStack() { stackData=new Stack<Integer>(); stackMin=new Stack<Integer>(); } public void push(int x) { if(stackMin.isEmpty()){ stackMin.push(x); }else if(x<=stackMin.peek()){ stackMin.push(x); } stackData.push(x); } /////這裡貌似有點問題。。。。//封裝類比較。。。。 public void pop() { if(stackData.peek().equals(stackMin.peek())){ stackMin.pop(); } stackData.pop(); } public int top() { return stackData.peek(); } public int getMin() { return stackMin.peek(); }}/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
PS:定義一個輔助棧。用於存放每一步的最小值。參見左老師的書P1。
Leetcode 155. Min Stack JAVA語言