Sommen van vensters met vaste grootte
Een venster met lengte k in O(n) verschuiven
Sommen van vensters met vaste grootte is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 1 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 Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Het probleem van herhaalde sommen
Veel taken vragen om de som van elk blok van k opeenvolgende elementen. Elk blok opnieuw vanaf nul berekenen is verspilling, en het kan efficiënter. 🪟
Eerst de trage aanpak
Het naïeve idee telt elk venster van lengte k afzonderlijk op. Daardoor doe je werk steeds opnieuw en kost het O(n maal k), wat te traag is voor grote invoer.
for i in range(n - k + 1):
s = sum(a[i:i + k])Het kerninzicht
Omliggende vensters overlappen bijna volledig. Als je één stap naar rechts gaat, verwijder je alleen het meest linkse element en voeg je rechts één nieuw element toe.
Initialiseer het eerste venster
Begin door de eerste k elementen één keer op te tellen. Deze ene som vormt de basis die je blijft bijwerken terwijl het venster vooruit schuift.
window = sum(a[:k])
best = windowSchuif één stap
Tel het binnenkomende element op en trek het vertrekkende element af. Zo blijft elke stap beperkt tot een constante hoeveelheid werk van O(1).
for i in range(k, n):
window += a[i] - a[i - k]Houd je antwoord bij
Werk na elke verschuiving bij wat je nodig hebt, bijvoorbeeld de maximumsom van een venster die je tot nu toe hebt gezien. De waarde van het venster is altijd direct beschikbaar.
best = max(best, window)De totale kosten zijn lineair
Je raakt elk element één keer aan om het op te tellen en nog één keer om het te verwijderen, dus de volledige doorloop is O(n). Daarmee voldoe je gemakkelijk aan grote invoergrenzen.
Let op de indices
Het element dat het venster verlaat is a[i - k], niet a[i - 1]. Deze verschuiving goed instellen is de meest voorkomende fout bij vaste vensters.
Gemiddelden krijg je erbij
Heb je het grootste gemiddelde van een venster nodig in plaats van de som? Deel de bijgehouden venstersom gewoon door k. De schuiflogica verandert helemaal niet.
avg = window / kVerwerk kleine arrays
Als de array korter is dan k, bestaat er geen volledig venster. Vergelijk vooraf len(a) met k en geef meteen een resultaat terug om een indexfout te voorkomen.
if n < k:
return NoneWanneer vaste vensters geschikt zijn
Gebruik dit patroon wanneer de lengte vaststaat en je waarden goedkoop combineert, zoals bij sommen, tellingen of eenvoudige lopende statistieken.
Snelle controle
Je schuift een venster met grootte k in één stap naar rechts door een array.
Samenvatting
Initialiseer het eerste venster één keer en tel op en trek af bij elke stap om het in O(1) te verschuiven. De volledige doorloop met vaste grootte werkt in lineaire tijd. ✅
Leer Voorbereiding op programmeerinterviews 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
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “Sommen van vensters met vaste grootte” gratis?
Ja — de volledige tekst van “Sommen van vensters met vaste grootte” 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 Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “Sommen van vensters met vaste grootte”?
Een venster met lengte k in O(n) verschuiven Je oefent met Voorbereiding op programmeerinterviews 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 Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews 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 1 van 4.
Hoe lang duurt de les “Sommen van vensters met vaste grootte”?
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 Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews 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
- Sommen van vensters met vaste grootte
- Variabel venster met twee pointers
- Langste substring zonder herhalingen
- Vensters tellen die aan een regel voldoen