首页 > 代码库 > Leetcode-Min Stack

Leetcode-Min Stack

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.

Solution:

 1 class MinStack { 2     Stack<Integer> stack; 3     int curMin; 4     Stack<Integer> minStack; 5  6  7     public MinStack(){ 8         stack = new Stack<Integer>(); 9         curMin = Integer.MAX_VALUE;10         minStack = new Stack<Integer>();11     }12 13 14     public void push(int x) {15         stack.push(x);16         if (x<=curMin){17             minStack.push(x);18             curMin = x;19         }20     }21 22     public void pop() {23         int val = stack.peek();24         stack.pop();25         if (val==curMin){26             minStack.pop();27             if (!minStack.isEmpty())28                 curMin = minStack.peek();29             else curMin = Integer.MAX_VALUE;30  31         }32     }33 34     public int top() {35         return stack.peek();36         37     }38 39     public int getMin() {40         return curMin;        41     }42 }

 

Leetcode-Min Stack