İçeriğe atla
CodeItRaw
Yığın & Kuyruk

Ders 4/4

Yığına değer yerine indeks koymak sana iki bilgiyi birden verir: değeri (values[i]) ve yeri. "Kaç gün beklemeli?" gibi sorularda cevap iki yerin farkıdır; değeri saklasaydın bu farkı hesaplayamazdın.

from collections import deque
window = deque()
for i, v in enumerate(values):
while window and values[window[-1]] <= v:
window.pop()
window.append(i)
if window[0] <= i - size:
window.popleft()
Kayan pencerenin en büyüğü için iki uçtan da eleman atabilmen gerekir: arkadan, yeni gelenden küçük olanları (artık hiçbir pencerenin en büyüğü olamazlar); önden, pencerenin dışında kalanı. deque iki ucu da tek adımda yapar; pencerenin en büyüğü hep window[0]'dadır.

Yığın bir ucu kullanır (son giren ilk çıkar), kuyruk iki ucu (ilk giren ilk çıkar). Listenin başından pop(0) yapmak kalan bütün elemanları kaydırır; kuyruk gerektiğinde deque kullan.

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Daha Sıcak Gün

    Fonksiyon

  2. 02

    Pencere Tepesi

    Fonksiyon

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi