Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • 1. push(x) — Push element x onto stack.
  • 2. pop() — Removes the element on top of the stack.
  • 3. top() — Get the top element.
  • 4. getMin() — Retrieve the minimum element in the stack.


Example 1:

Input [“MinStack”,”push”,”push”,”push”,”getMin”,”pop”,”top”,”getMin”] [[],[-2],[0],[-3],[],[],[],[]] Output [null,null,null,null,-3,null,0,-2] Explanation MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); // return -3 minStack.pop();; // return 0 minStack.getMin(); // return -2



  • Methods pop, top and getMin operations will always be called on non-empty stacks.


To get min element in constant time, we need two collections to store one for the actual data and other for min value.



-3 0 -2

We encourage you to write a comment if you have a better solution or having any doubt on the above topic.

Leave a Reply

Your email address will not be published. Required fields are marked *