Skip to solution
mediumDSA

What is a monotonic stack and when do you use it?

786 views
01

Understand the problem

Explain monotonic stacks.

stackmonotonic
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Nudge consolestandby

Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.

03

Study the solution

A monotonic stack keeps elements in increasing or decreasing order, popping violators as you push. It solves 'next/previous greater or smaller element' problems — like daily temperatures or stock spans — in O(n), since each element is pushed and popped once.

Solution ready — 2 min read

Classified // press E to declassify

04

Read the code

Daily temperatures (next greater)
Run Playground
def daily_temperatures(temps):
    n = len(temps)
    answer = [0] * n
    stack = []                          # indices, temperatures decreasing
    for i, t in enumerate(temps):
        while stack and temps[stack[-1]] < t:
            j = stack.pop()
            answer[j] = i - j           # days until a warmer temperature
        stack.append(i)
    return answer


# --- demo ---
print(daily_temperatures([73, 74, 75, 71, 69, 72, 76, 73]))
# [1, 1, 4, 2, 1, 1, 0, 0]
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.

Transmission complete // awaiting log

KEEP THE
STREAK ALIVE.

Dossier 49 of 127 decoded in the Data Structures & Algorithms track. One more won't hurt.

Back to track