Min Stack

LeetCode

LeetCode: https://leetcode.com/problems/min-stack/

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

1class MinStack:
2 def __init__(self):
3 self.stack = []
4 self.mins = []
5
6 def push(self, val: int) -> None:
7 self.stack.append(val)
8 if not self.mins or val <= self.mins[-1]:
9 self.mins.append(val)
10
11 def pop(self) -> None:
12 val = self.stack.pop()
13 if val == self.mins[-1]:
14 self.mins.pop()
15
16 def top(self) -> int:
17 return self.stack[-1]
18
19 def getMin(self) -> int:
20 return self.mins[-1]
top
-2
0
mins=[-2]
op=push(-2)
Step 1 / 6
Step 1:
Push -2. stack=[-2]. mins=[-2].
Pointers: top=0
Focus: select @ [0]
op="push(-2)"