Agrupe e Separe em Categorias com um Mapa
Agrupe anagramas e itens semelhantes.
Agrupe e Separe em Categorias com um Mapa é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.
Agrupar é um padrão
Muitos problemas pedem que você agrupe elementos que têm algo em comum. Um mapa de chave para compartimento transforma isso em uma única passagem simples. 🗂️
Escolha a chave de agrupamento
O truque consiste em escolher uma chave que seja idêntica para os elementos do mesmo grupo. Acerte isso e o restante será fácil.
Criar compartimentos com um dicionário padrão
Use um dicionário padrão de listas para que toda chave nova comece com um compartimento vazio. Você adiciona elementos sem nunca verificar se a chave existe.
from collections import defaultdict
buckets = defaultdict(list)O laço principal
Para cada elemento, calcule sua chave e append o elemento ao compartimento dessa chave. Uma linha por elemento agrupa tudo.
for word in words:
buckets[key_of(word)].append(word)Agrupar anagramas
Os anagramas compartilham suas letras ordenadas, portanto a cadeia de caracteres ordenada é a chave de grupo perfeita. Ordene uma vez e depois agrupe por ela.
k = ''.join(sorted(word))
buckets[k].append(word)Chaves de tupla para contagens
Quando a ordenação for lenta, uma tupla de contagens de letras também funcionará como chave. Tuplas são hasháveis, então podem ser inseridas facilmente em um dicionário.
k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')Agrupar por uma propriedade
Agrupe números pelo resto, pela paridade ou pelo comprimento simplesmente alterando a chave. O padrão permanece idêntico entre os problemas.
for n in nums:
buckets[n % 3].append(n)Ideia da ordenação por compartimentos
Quando os valores se encaixam em um intervalo pequeno, coloque cada um em um compartimento indexado e leia-os em ordem. Isso produz uma ordenação quase linear.
for x in nums:
bucket[x].append(x)Coletar os resultados
Depois de criar os compartimentos, a resposta geralmente está nos values do dicionário. Converta-os em uma lista quando o avaliador quiser os próprios grupos.
result = list(buckets.values())Contagem por grupo
Se você precisar apenas dos tamanhos dos grupos, agrupe em um contador ou some os comprimentos no final. Escolha o que a questão realmente pede.
sizes = {k: len(v) for k, v in buckets.items()}Por que o mapeamento vence
Agrupar com um mapa leva O(n) em vez de comparar todos os pares. A chave dispersada faz o trabalho de correspondência por você.
Verificação rápida
Você quer agrupar palavras para que os anagramas caiam no mesmo compartimento.
Recapitulação
Agrupe mapeando a chave de cada elemento para um compartimento de dicionário padrão em uma única passagem O(n). Escolha bem a chave e os problemas de agrupamento ficarão muito mais fáceis. 🚀
Perguntas Frequentes
A aula “Agrupe e Separe em Categorias com um Mapa” é grátis?
Sim — o texto completo de “Agrupe e Separe em Categorias com um Mapa” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.
O que vou aprender em “Agrupe e Separe em Categorias com um Mapa”?
Agrupe anagramas e itens semelhantes. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Coding Interview Prep?
Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Agrupe e Separe em Categorias com um Mapa”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Coding Interview Prep?
Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conjuntos para Pertencimento e Deduplicação
- Dicionários como Tabelas de Consulta
- Counter e defaultdict em Ação
- Agrupe e Separe em Categorias com um Mapa