Data Structures22 min read
Monotonic Stack
Use monotonic stacks to solve next greater/smaller problems efficiently in linear time.
David Miller
October 10, 2025
3.1k100
Monotonic stack keeps elements in increasing or decreasing order.
Problem: next greater element
def next_greater(nums):
st = []
res = [-1]*len(nums)
for i in range(len(nums)):
while st and nums[i] > nums[st[-1]]:
j = st.pop()
res[j] = nums[i]
st.append(i)
return res
print(next_greater([2,1,2,4,3]))
Graph
flowchart LR
A[Stack] --> B[Keep order]
B --> C[Pop when broken]
Remember
- stack keeps monotonic order
- solves many range problems in O(n)
#Python#Advanced#Stack