Meet in the Middle
Reduzca el exponente dividiendo la búsqueda en dos
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_setDos 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. 🚀
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
- Estados ganadores y perdedores en juegos
- Nim y el número de Grundy
- Meet in the Middle
- Depure rápido: pruebas de estrés y triaje