Competitive Programming Academy · Lección

Agrupe y clasifique con un mapa

Agrupe anagramas y elementos similares

Lección 4 de 413 pasos

Agrupe y clasifique con un mapa es una lección gratuita de Competitive Programming Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Competitive Programming Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Competitive Programming Academy incluye 4 lecciones en total.

Agrupar es un patrón

Muchos problemas le piden agrupar elementos que tienen algo en común. Un mapa de claves a grupos convierte esto en un único recorrido limpio. 🗂️

Elija la clave de agrupación

El truco consiste en elegir una clave que sea idéntica para los elementos del mismo grupo. Si acierta, el resto resulta sencillo.

Crear grupos con defaultdict

Use defaultdict(list) para que cada clave nueva comience con un grupo vacío. Puede añadir elementos sin comprobar nunca si la clave existe.

from collections import defaultdict
buckets = defaultdict(list)

El bucle principal

Para cada elemento, calcule su clave y append el elemento al grupo de esa clave. Una línea por elemento agrupa todo.

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

Agrupar anagramas

Los anagramas comparten sus letras ordenadas, por lo que la cadena ordenada es la clave de grupo perfecta. Ordene una vez y después agrupe según ella.

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

Claves de tipo tupla para los recuentos

Cuando ordenar resulta lento, también puede usar como clave una tupla de recuentos de letras. Las tuplas son hashable, así que encajan perfectamente en un dict.

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

Agrupar por una propiedad

Agrupe números por su resto, paridad o longitud cambiando únicamente la clave. El patrón sigue siendo idéntico en distintos problemas.

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

La idea de la ordenación por grupos

Cuando los valores caben en un intervalo pequeño, coloque cada uno en un grupo indexado y léalos en orden. Esto permite una ordenación casi lineal.

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

Recopilar los resultados

Después de crear los grupos, la respuesta suele estar en los values del dict. Conviértalos en una lista cuando el juez necesite los grupos como tales.

result = list(buckets.values())

Contar por grupo

Si solo necesita los tamaños de los grupos, agrupe en un Counter o sume las longitudes al final. Elija según lo que realmente solicite el enunciado.

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

Por qué gana el mapeo

Agrupar con un mapa requiere O(n) en lugar de comparar cada par. La clave hasheada realiza el trabajo de encontrar las coincidencias.

Comprobación rápida

Quiere agrupar palabras para que los anagramas queden en el mismo grupo.

Repaso

Agrupe asociando la clave de cada elemento con un grupo de defaultdict en un único recorrido O(n). Elija bien la clave y los problemas de agrupación resultarán mucho más sencillos. 🚀

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Agrupe y clasifique con un mapa» es gratis?

Sí — el texto completo de «Agrupe y clasifique con un mapa» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Competitive Programming Academy, actualiza a CoddyKit PRO. El curso de Competitive Programming Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Agrupe y clasifique con un mapa»?

Agrupe anagramas y elementos similares Practicas Competitive Programming Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Competitive Programming Academy?

No se requiere experiencia previa. Competitive Programming Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Agrupe y clasifique con un mapa»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Competitive Programming Academy?

Sí. Cada lección de Competitive Programming Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Sets para pertenencia y eliminación de duplicados
  2. Diccionarios como tablas de consulta
  3. Counter y defaultdict en acción
  4. Agrupe y clasifique con un mapa
← Volver a Competitive Programming Academy