Monotonic Stack & Queue

Data Structures

Nearest greater/smaller elements and range extremums in linear time

85 problems·2 Easy·50 Medium·33 Hard
Pattern Study Guide & Cheat Sheet
▼

Maintain a stack with strictly increasing or decreasing elements to find the Nearest Greater or Smaller Element for all elements in O(N) total time.

Core Invariant: Every element is pushed once and popped at most once. Pushing an element pops all elements that violate monotonicity, meaning the incoming element IS their Next Greater/Smaller answer!

Recognize it (Keywords & Signals)
  • Find next greater / next smaller element for each position
  • Previous greater element / stock span problems
  • Largest rectangle in histogram
  • Daily temperatures (number of days until a warmer day)
  • Trapping rain water (horizontal bounded bars)
When NOT to use

Need arbitrary lookups across non-monotonic boundaries or dynamic insertions with k-th queries (use Heap or BST).

How to solve (Step-by-step)
  1. 1.Initialize `stack = []` (store indices to compute distances) and `res = [-1] * n`.
  2. 2.Iterate `i` from 0 to n - 1 with current value `x = nums[i]`.
  3. 3.While stack is non-empty and `nums[stack[-1]] < x` (for next greater): pop `idx = stack.pop()`, record `res[idx] = x`.
  4. 4.Push current index `i` onto stack.
  5. 5.Elements left in stack have no next greater element (remain -1).
Watch for (Interview Traps)
  • Storing values instead of indices (indices allow both value lookup and distance calculation)
  • Confusion over `<` vs `<=` (decide whether equal values should pop or remain based on problem statement)
  • Circular arrays: forget to iterate `2 * n` with index `i % n`
Next Greater Element (Monotonic Decreasing Stack)
def next_greater_elements(nums: list[int]) -> list[int]:
    n = len(nums)
    res = [-1] * n
    stack = []  # Stores indices of unresolved elements
    
    for i in range(n):
        # Pop all elements smaller than current element nums[i]
        while stack and nums[i] > nums[stack[-1]]:
            popped_idx = stack.pop()
            res[popped_idx] = nums[i]  # nums[i] is the next greater element!
            
        stack.append(i)
        
    return res
Cost
O(n) amortized (each index pushed and popped at most once) · O(n) for stack and result array (Avoids O(n^2) nested search for adjacent extremes.)
Canonical problems
#739 Daily Temperatures: Monotonic decreasing stack tracks days until warmer temperature
#84 Largest Rectangle in Histogram: Monotonic increasing stack finds left/right smaller boundaries
#42 Trapping Rain Water: Stack stores decreasing valley bars until bounded by higher right wall
#907 Sum of Subarray Minimums: Find left and right strictly smaller elements for each value
Hard·84 companies·Max freq 100%·Acc 67.7%
Goldman SachsThousandEyesPublicis Sapient+81
Hard·55 companies·Max freq 100%·Acc 49.0%
CohesityblinkitZenefits+52
Medium·36 companies·Max freq 100%·Acc 48.4%
QualtricsDream11Roku+33
Medium·35 companies·Max freq 100%·Acc 68.9%
BrowserStackSonatusAirwallex+32
Hard·33 companies·Max freq 92%·Acc 50.3%
NeetCode 150NeetCode 150thoughtspot+30
Medium·23 companies·Max freq 100%·Acc 37.2%
park+SnapCoupang+20
Medium·19 companies·Max freq 87%·Acc 68.7%
SigmoidKLAZeta Global+16
Medium·18 companies·Max freq 100%·Acc 0.6%
UberMolocoPhonePe+15
Hard·18 companies·Max freq 81%·Acc 73.3%
CitigroupWaymoCitigroup+15
Hard·17 companies·Max freq 83%·Acc 0.6%
WorldQuantZeta GlobalArcesium+14
Easy·17 companies·Max freq 82%·Acc 76.5%
SwiggyFlipkartBloomberg+14
Medium·15 companies·Max freq 88%·Acc 0.4%
ZS AssociatesAvitoSprinklr+12
Medium·14 companies·Max freq 100%·Acc 53.5%
IncreffFactSetExpedia+11
Medium·13 companies·Max freq 100%·Acc 55.4%
NutanixNeetCode 150NeetCode 150+10
Medium·12 companies·Max freq 90%·Acc 50.7%
Two SigmaMakeMyTripSprinklr+9
Medium·12 companies·Max freq 66%·Acc 0.4%
DoorDashMitsogoMorgan Stanley+9
Hard·11 companies·Max freq 88%·Acc 69.2%
MathWorksChubbMorgan Stanley+8
Medium·9 companies·Max freq 100%·Acc 0.7%
FactSetByteDancePaytm+6
Hard·9 companies·Max freq 100%·Acc 32.9%
DevRevPhonePeGoldman Sachs+6
Medium·9 companies·Max freq 100%·Acc 38.4%
LiveRampeBayDeloitte+6
Medium·9 companies·Max freq 97%·Acc 51.4%
razorpayTekionDE Shaw+6
Medium·9 companies·Max freq 88%·Acc 61.5%
ChubbDE ShawPhonePe+6
Medium·9 companies·Max freq 88%·Acc 55.9%
ZeptoAccentureJosh Technology+6
Hard·9 companies·Max freq 68%·Acc 0.8%
Dream11GoogleIBM+6
Hard·8 companies·Max freq 64%·Acc 0.4%
AccoliteFlipkartDE Shaw+5
Medium·8 companies·Max freq 54%·Acc 34.9%
SprinklrDoorDashAmazon+5
Medium·8 companies·Max freq 50%·Acc 69.4%
AmazonBloombergMicrosoft+5
Easy·7 companies·Max freq 100%·Acc 84.2%
Dream11UberMicrosoft+4
Medium·7 companies·Max freq 100%·Acc 46.5%
AQR Capital ManagementVisaMicrosoft+4
Medium·7 companies·Max freq 77%·Acc 64.2%
PoshmarkGoogleAmazon+4
Medium·7 companies·Max freq 43%·Acc 84.4%
LyftAmazonSalesforce+4
Medium·5 companies·Max freq 100%·Acc 51.8%
ZenefitsExpediaSalesforce+2
Medium·5 companies·Max freq 88%·Acc 80.9%
MetaAndurilAmazon+2
Hard·5 companies·Max freq 88%·Acc 50.0%
Walmart LabsAmazonGoogle+2
Hard·5 companies·Max freq 75%·Acc 52.4%
InfosysAmazonGoogle+2
Medium·5 companies·Max freq 58%·Acc 64.5%
QualcommMicrosoftBloomberg+2
Medium·5 companies·Max freq 38%·Acc 58.0%
GoogleAmazonBloomberg+2
Hard·5 companies·Max freq 28%·Acc 55.0%
SalesforceGoogleAmazon+2
Medium·4 companies·Max freq 90%·Acc 67.9%
MathWorksPhonePeGoogle+1
Hard·4 companies·Max freq 89%·Acc 0.3%
HarnessBNY MellonMicrosoft+1
Medium·4 companies·Max freq 65%·Acc 0.4%
ExpediaSalesforceArcesium+1
Medium·4 companies·Max freq 52%·Acc 0.4%
UberInfosysAmazon+1
Medium·4 companies·Max freq 28%·Acc 86.4%
MicrosoftGoogleMeta+1
Medium·4 companies·Max freq 27%·Acc 71.0%
GoogleBloombergAmazon+1
Medium·4 companies·Max freq 25%·Acc 75.0%
AmazonMicrosoftGoogle+1
Medium·4 companies·Max freq 18%·Acc 53.1%
BloombergAmazonGoogle+1
Medium·4 companies·Max freq 13%·Acc 58.5%
AmazonGoogleMeta+1
Hard·3 companies·Max freq 100%·Acc 24.0%
HuaweiWorldQuantDE Shaw
Medium·3 companies·Max freq 75%·Acc 37.9%
InfosysNetAppGoogle
Hard·3 companies·Max freq 65%·Acc 41.3%
SprinklrGoogleAmazon
50 displayed (of 50 matching)Filtered: All Companies

Top Companies Testing Monotonic Stack & Queue

Browse company-specific interview problem lists and recency breakdowns:

Explore All 22 DSA Coding Patterns

Master core algorithmic patterns tested in FAANG & Big Tech coding interviews.

Patterns Hub

Monotonic Stack & Queue frequently asked questions

What is the Monotonic Stack & Queue pattern in coding interviews?

Nearest greater/smaller elements and range extremums in linear time It is categorized under Data Structures and features 85 curated interview problems across Easy (2), Medium (50), and Hard (33) difficulties.

Which tech companies frequently test Monotonic Stack & Queue?

Companies frequently asking Monotonic Stack & Queue questions include Google, Amazon, Microsoft, Meta, Bloomberg, TikTok.

How do I master the Monotonic Stack & Queue pattern?

Start by studying the algorithmic strategy and template code, then practice Easy and Medium problems before attempting Hard problems under timed conditions.