Design a system collecting stock prices daily. stockSpan() returns number of consecutive days (including today) price was <= today's price.
Monotonic stack: store (price, span) pairs. Pop smaller prices and accumulate spans.
- Stack of (price, span) pairs
- For each new price: span = 1
- While stack top price <= current: span += top.span, pop
- Push (price, span)
- Return span
- Time Complexity: O(1) amortized
- Space Complexity: O(n)