155. Min Stack LeetCode Solution
In this guide, you will get 155. Min Stack LeetCode Solution with the best time and space complexity. The solution to Min Stack problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Min Stack solution in C++
- Min Stack solution in Java
- Min Stack solution in Python
- Additional Resources
Problem Statement of Min Stack
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
Implement the MinStack class:
MinStack() initializes the stack object.
void push(int val) pushes the element val onto the stack.
void pop() removes the element on the top of the stack.
int top() gets the top element of the stack.
int getMin() retrieves the minimum element in the stack.
You must implement a solution with O(1) time complexity for each function.
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();
minStack.top(); // return 0
minStack.getMin(); // return -2
Constraints:
-231 <= val <= 231 – 1
Methods pop, top and getMin operations will always be called on non-empty stacks.
At most 3 * 104 calls will be made to push, pop, top, and getMin.
Complexity Analysis
- Time Complexity: O(1)
- Space Complexity: O(n)
155. Min Stack LeetCode Solution in C++
class MinStack {
public:
void push(int x) {
if (stack.empty())
stack.emplace(x, x);
else
stack.emplace(x, min(x, stack.top().second));
}
void pop() {
stack.pop();
}
int top() {
return stack.top().first;
}
int getMin() {
return stack.top().second;
}
private:
stack<pair<int, int>> stack; // {x, min}
};
/* code provided by PROGIEZ */
155. Min Stack LeetCode Solution in Java
class MinStack {
public void push(int x) {
if (stack.isEmpty())
stack.push(new int[] {x, x});
else
stack.push(new int[] {x, Math.min(x, stack.peek()[1])});
}
public void pop() {
stack.pop();
}
public int top() {
return stack.peek()[0];
}
public int getMin() {
return stack.peek()[1];
}
private Stack<int[]> stack = new Stack<>(); // {x, min}
}
// code provided by PROGIEZ
155. Min Stack LeetCode Solution in Python
class MinStack:
def __init__(self):
self.stack = []
def push(self, x: int) -> None:
mn = x if not self.stack else min(self.stack[-1][1], x)
self.stack.append([x, mn])
def pop(self) -> None:
self.stack.pop()
def top(self) -> int:
return self.stack[-1][0]
def getMin(self) -> int:
return self.stack[-1][1]
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.