"Her elemanın sağındaki ilk büyük eleman hangisi?" sorusunu iki iç içe döngüyle çözmek kolaydır ve yavaştır. Hile şu: cevabını henüz bulamamış elemanları bir yığında beklet. Yeni bir eleman geldiğinde, yığının tepesinde ondan küçük kim varsa cevabını bulmuştur.
answer = []waiting = []for v in values:while waiting and waiting[-1] >= v:waiting.pop()answer.append(waiting[-1] if waiting else -1)waiting.append(v)
Yığındaki değerler aşağıdan yukarı hep aynı yönde sıralı kalır (gelen eleman sırayı bozanları atar), adı buradan gelir. İç içe while gözünü korkutmasın: her eleman yığına bir kez girer ve en çok bir kez çıkar, toplam iş 2n'yi geçmez.