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