Competitive Programming Academy · Les

Groeperen en indelen met een map

Anagrammen en vergelijkbare items groeperen

Les 4 van 413 stappen

Groeperen en indelen met een map is een gratis Competitive Programming Academy-les op CoddyKit. Dit is les 4 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.

Groeperen is een patroon

Veel opgaven vragen je om elementen die iets gemeen hebben te groeperen. Een koppeling van sleutel naar bakje maakt daar één nette doorgang van. 🗂️

Kies de groepssleutel

De hele truc draait om het kiezen van een sleutel die gelijk is voor elementen in dezelfde groep. Als dat klopt, is de rest eenvoudig.

Groeperen met defaultdict

Gebruik defaultdict(list), zodat elke nieuwe sleutel met een leeg bakje begint. Je voegt elementen toe zonder ooit te controleren of de sleutel bestaat.

from collections import defaultdict
buckets = defaultdict(list)

De kernlus

Bereken voor elk element de sleutel en voeg het element toe aan het bakje van die sleutel. Met één regel per element groepeer je alles.

for word in words:
    buckets[key_of(word)].append(word)

Anagrammen groeperen

Anagrammen hebben dezelfde gesorteerde letters, dus de gesorteerde tekenreeks is de perfecte groepssleutel. Sorteer één keer en groepeer daarna op die sleutel.

k = ''.join(sorted(word))
buckets[k].append(word)

Tuple-sleutels voor tellingen

Wanneer sorteren te traag is, kun je ook een tuple met lettertellingen als sleutel gebruiken. Tupels zijn hashbaar en passen daarom probleemloos in een dict.

k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')

Groeperen op een eigenschap

Groepeer getallen op rest, pariteit of lengte door alleen de sleutel te veranderen. Het patroon blijft bij verschillende opgaven hetzelfde.

for n in nums:
    buckets[n % 3].append(n)

Het idee achter bakjessortering

Als waarden binnen een klein bereik vallen, plaats je elke waarde in een geïndexeerd bakje en lees je de bakjes op volgorde uit. Dat levert bijna lineaire sortering op.

for x in nums:
    bucket[x].append(x)

De resultaten verzamelen

Na het verdelen over bakjes bestaat het antwoord meestal uit de values van de dict. Zet ze om in een lijst als de beoordelaar de groepen zelf verwacht.

result = list(buckets.values())

Per groep tellen

Als je alleen de groottes van groepen nodig hebt, kun je de elementen in een Counter tellen of aan het einde de lengtes optellen. Kies wat de vraag werkelijk vraagt.

sizes = {k: len(v) for k, v in buckets.items()}

Waarom een koppeling wint

Groeperen met een koppeling kost O(n) in plaats van dat je elk paar vergelijkt. De gehashte sleutel doet het vergelijkingswerk voor je.

Korte controle

Je wilt woorden zo groeperen dat anagrammen in hetzelfde bakje terechtkomen.

Samenvatting

Groepeer door de sleutel van elk element in één doorgang van O(n) onder te brengen in een defaultdict-bakje. Kies de sleutel zorgvuldig en groepsopgaven worden een stuk eenvoudiger. 🚀

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 “Groeperen en indelen met een map” gratis?

Ja — de volledige tekst van “Groeperen en indelen met een map” 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 “Groeperen en indelen met een map”?

Anagrammen en vergelijkbare items groeperen 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 4 van 4.

Hoe lang duurt de les “Groeperen en indelen met een map”?

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. Sets voor lidmaatschap en deduplicatie
  2. Dictionaries als opzoektabellen
  3. Counter en defaultdict in actie
  4. Groeperen en indelen met een map
← Terug naar Competitive Programming Academy