Coding Interview Prep · Lección

Meet in the Middle

Reduzca el exponente dividiendo la búsqueda en dos

Lección 3 de 413 pasos

Meet in the Middle es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 3 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 Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

Cuando la fuerza bruta es demasiado lenta

Algunos problemas tienen un N cercano a 40, y probar los 2^N subconjuntos es inviable. Meet in the middle permite resolver estos casos de tamaño intermedio. 🤝

La idea central

Divida la entrada en dos mitades. Resuelva cada mitad mediante fuerza bruta y después combine ingeniosamente los dos resultados parciales.

Reducir el exponente a la mitad

Dos mitades de tamaño N/2 cuestan 2^(N/2) cada una, en lugar de 2^N en total. Esta reducción a la raíz cuadrada convierte 2^40 en unos asequibles 2^20.

Un objetivo clásico: suma de subconjuntos

Determine si algún subconjunto suma un objetivo T. La suma de subconjuntos con N cercano a 40 es el problema clásico para aplicar meet in the middle.

Enumerar la primera mitad

Enumere todas las sumas de subconjuntos de la mitad izquierda y almacénelas. Con N/2 elementos, son solo 2^(N/2) sumas.

from itertools import combinations
left = arr[:len(arr)//2]
sums_l = []

Enumerar la segunda mitad

Haga lo mismo con la mitad derecha y construya su lista completa de sumas de subconjuntos. Ahora tiene dos listas manejables.

Combinar con una consulta

Para cada suma derecha r, necesita una suma izquierda igual a T menos r. Un conjunto o una lista ordenada permite comprobarlo rápidamente.

need = T - r
found = need in left_set

Dos formas de hacer coincidir

Para objetivos exactos, use un conjunto hash. Para contar o encontrar sumas cercanas, ordene una mitad y haga una búsqueda binaria en ella.

El coste temporal

El trabajo total es aproximadamente 2^(N/2) multiplicado por un factor logarítmico debido a la búsqueda o la ordenación. Esa complejidad es lo que hace viable un N cercano a 40.

La memoria es el precio

Almacena una mitad completa, por lo que la memoria crece hasta 2^(N/2). Conserve solo lo imprescindible para mantenerse dentro del límite.

Dónde más destaca

Además de la suma de subconjuntos, úselo para hallar el subconjunto máximo bajo un límite, contar pares y resolver problemas al estilo del logaritmo discreto. Se beneficia de una buena división.

Comprobación rápida

Aplica meet in the middle a un problema de subconjuntos con N elementos. ¿Cuál es el coste temporal aproximado?

Repaso

Divida en dos mitades, aplique fuerza bruta a cada una y después haga coincidir las sumas izquierda y derecha. Ha cambiado un poco de memoria por una enorme mejora de velocidad. 🚀

Gratis para empezar

Aprende Coding Interview Prep 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
90
Lecciones
360

Preguntas frecuentes

¿La lección «Meet in the Middle» es gratis?

Sí — el texto completo de «Meet in the Middle» 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 Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Meet in the Middle»?

Reduzca el exponente dividiendo la búsqueda en dos Practicas Coding Interview Prep 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 Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep 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 3 de 4.

¿Cuánto tiempo toma la lección «Meet in the Middle»?

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 Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep 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. Estados ganadores y perdedores en juegos
  2. Nim y el número de Grundy
  3. Meet in the Middle
  4. Depure rápido: pruebas de estrés y triaje
← Volver a Coding Interview Prep