/155. Min Stack

155. Min Stack

Medium
Stack57.8% acceptance

Implement a stack data structure that supports the following operations in constant time: push(element), pop(), top(), and get_min(). The stack should allow retrieving the minimum element currently in the stack in O(1) time. Implement the class MinStack with methods: __init__(), push(value), pop(), top(), and get_min().

Example 1

Input: ["MinStack","push","push","push","get_min","pop","top","get_min"] [[],[5],[1],[7],[],[],[],[]]

Output: [None,None,None,None,1,None,1,1]

Explanation: MinStack stack = MinStack(); stack.push(5); stack.push(1); stack.push(7); stack.get_min() returns 1; stack.pop(); stack.top() returns 1; stack.get_min() returns 1;

Example 2

Input: ["MinStack","push","push","pop","get_min","top"] [[],[10],[3],[],[],[]]

Output: [None,None,None,None,10,10]

Explanation: MinStack stack = MinStack(); stack.push(10); stack.push(3); stack.pop(); stack.get_min() returns 10; stack.top() returns 10;

Constraints

  • -231 <= value <= 231 - 1
  • pop(), top(), and get_min() will only be called when the stack is non-empty
  • At most 30,000 operations will be performed
Python (current runtime)

Case 1

Input: ["MinStack","push","push","push","get_min","pop","top","get_min"] [[],[8],[4],[6],[],[],[],[]]

Expected: [None,None,None,None,4,None,4,4]

Case 2

Input: ["MinStack","push","push","pop","get_min","top"] [[],[-1],[2],[],[],[]]

Expected: [None,None,None,None,-1,-1]

Case 3

Input: ["MinStack","push","push","push","pop","get_min","top"] [[],[100],[50],[200],[],[],[]]

Expected: [None,None,None,None,None,50,50]