Data Structures22 min read
Monotonic Stack
Use monotonic stacks to solve next greater/smaller problems efficiently in linear time.
David Miller
December 21, 2025
0.0k0
Monotonic stack keeps elements in increasing or decreasing order.
Problem: next greater element ```python 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 ```mermaid 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