Competitive Programming Academy · Les

Queues en collections.deque

Snel aan beide uiteinden toevoegen en verwijderen

Les 3 van 413 stappen

Queues en collections.deque is een gratis Competitive Programming Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Competitive Programming Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Competitive Programming Academy bevat in totaal 4 lessen.

Als eerste erin, als eerste eruit

Een wachtrij verwerkt elementen in de volgorde waarin ze zijn aangekomen, net als een rij in een winkel. Het eerste element erin is het eerste element eruit.

Waarom je geen lijst gebruikt

Een lijst kan aan de voorkant verwijderen, maar pop(0) kost O(n), omdat elk ander element naar links verschuift. Dat is te traag voor grote invoer.

q = []
q.pop(0)  # O(n), avoid this

Maak kennis met collections.deque

De deque uit collections is een wachtrij met twee uiteinden die aan beide kanten in O(1) tijd elementen toevoegt en verwijdert. Dit is je standaardkeuze voor wedstrijden.

from collections import deque
q = deque()

Achteraan in de wachtrij plaatsen

Voeg nieuwe elementen met append aan het rechteruiteinde toe, precies zoals bij een lijst. Dit is de achterkant van de wachtrij.

q.append(1)
q.append(2)

Vooraan uit de wachtrij verwijderen

Verwijder het oudste element links met popleft. Dit kost constante tijd en zorgt voor echt FIFO-gedrag.

first = q.popleft()  # returns 1

Beide uiteinden zijn toegankelijk

Een deque ondersteunt ook appendleft en pop aan de rechterkant. Dankzij die flexibiliteit kan één structuur als stack of wachtrij werken.

q.appendleft(0)
last = q.pop()

Controleer voordat je verwijdert

Verwijderen uit een lege deque veroorzaakt een foutmelding. Controleer daarom in lussen while q om je doorloop veilig te houden.

while q:
    x = q.popleft()

Wachtrijen maken BFS mogelijk

De meest voorkomende toepassing in wedstrijden is BFS. Je plaatst een startknooppunt in de wachtrij en verwijdert vervolgens steeds het voorste element terwijl je de buren toevoegt.

Een klein BFS-skelet

Deze lus bezoekt knooppunten laag voor laag. Elke buur wordt toegevoegd en later verwerkt in volgorde van aankomst.

while q:
    node = q.popleft()
    for nb in graph[node]:
        q.append(nb)

Beperk de grootte van de deque

Met maxlen laat je een deque het oudste element verwijderen zodra die vol is. Dat is perfect voor schuifvensters en het bijhouden van recente geschiedenis.

window = deque(maxlen=3)

Eén structuur, veel rollen

Onthoud dat een deque aan beide uiteinden snel is. Gebruik hem dus wanneer je een wachtrij, stack of schuifbuffer nodig hebt.

Snelle controle

Je hebt snelle verwijdering aan de voorkant van een wachtrij nodig. Welke keuze is juist?

Samenvatting: deque is de snelle wachtrij

Je hebt kennisgemaakt met collections.deque: append en popleft voor O(1) FIFO, twee toegankelijke uiteinden en maxlen voor vensters. Dit vormt de basis van BFS. 🎯

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Queues en collections.deque” gratis?

Ja — de volledige tekst van “Queues en collections.deque” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Competitive Programming Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Competitive Programming Academy bevat in totaal 4 lessen.

Wat leer ik in “Queues en collections.deque”?

Snel aan beide uiteinden toevoegen en verwijderen Je oefent met Competitive Programming Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Competitive Programming Academy te beginnen?

Ervaring vooraf is niet nodig. Competitive Programming Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Queues en collections.deque”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Competitive Programming Academy?

Ja. Elke les over Competitive Programming Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Stacks voor overeenkomende haakjes
  2. Monotone stack: volgende grotere element
  3. Queues en collections.deque
  4. Maximum in een sliding window met deque
← Terug naar Competitive Programming Academy