Problemas resueltos: #160 Intersección de dos listas enlazadas #543 Diámetro de un árbol binario
Este es mi progreso diario de LeetCode – Día 18: Intersección de listas enlazadas y Diámetro de árbol. Hoy abordé dos clásicos de estructuras de datos que aparecen constantemente en entrevistas y en sistemas reales.
Lo que aprendí
Intersección de dos listas enlazadas (#160): el patrón de dos punteros funciona de forma elegante. Avanza un puntero por A y otro por B; cuando uno llegue a null, salta al inicio de la otra lista. Tras recorrer m + n pasos ambos habrán cubierto la misma distancia y se encontrarán exactamente en el nodo de intersección (o en null si no existe). Sin necesidad de calcular longitudes ni de memoria extra.
Diámetro de un árbol binario (#543): el camino más largo entre dos nodos pasa por algún nodo cuyo mejor camino es altura_izquierda + altura_derecha. Con un DFS que devuelve la altura de cada subárbol y un máximo global se obtiene el diámetro en una sola pasada.
Patrones reforzados: dos punteros para listas y recursión en profundidad para árboles. Son ideas simples, potentes y de gran impacto en la práctica.
#160 — Intersección de dos listas enlazadas
Idea paso a paso: 1) Inicia punteros a = headA y b = headB. 2) Mientras a no sea b: a = a.next si a existe, en caso contrario a = headB; b = b.next si b existe, en caso contrario b = headA. 3) Cuando a == b, has encontrado el nodo de intersección o ambos son null si no hay intersección.
Complejidad: tiempo O(m + n), espacio O(1).
#543 — Diámetro de un árbol binario
Idea paso a paso: 1) Define una función dfs(nodo) que devuelva la altura del subárbol. 2) Para cada nodo, calcula left = dfs(nodo.izq) y right = dfs(nodo.der). 3) Actualiza un máximo global con left + right. 4) Retorna 1 + max(left, right) como altura. 5) El resultado final es el máximo global acumulado.
Complejidad: tiempo O(n), espacio O(h) por la pila de recursión, donde h es la altura del árbol.
Logros del día
Implementé una solución de dos punteros clara para la intersección de listas enlazadas y un DFS limpio para el diámetro en Python y C++. Estas soluciones son concisas, óptimas y fáciles de razonar.
Resumen de complejidad
Intersección de listas enlazadas: O(m + n) tiempo y O(1) espacio. Diámetro de árbol binario: O(n) tiempo y O(h) espacio.
Cómo esto se conecta con el mundo real
En Q2BSTUDIO aplicamos estos patrones para construir software a medida escalable y robusto: desde motores de recomendación hasta pipelines de datos y validaciones en tiempo real. La capacidad de resolver problemas con estructuras de datos eficientes impacta en latencia, consumo de memoria y coste operativo en producción.
Si buscas acelerar tu roadmap con aplicaciones a medida y software a medida, descubre nuestro enfoque end to end en desarrollo de software a medida y multiplataforma. Y si tu prioridad es incorporar inteligencia artificial en tus productos o procesos, explora nuestros servicios de IA para empresas y agentes IA.
Sobre Q2BSTUDIO
Somos una empresa de desarrollo con foco en aplicaciones a medida, inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. También impulsamos la toma de decisiones con servicios inteligencia de negocio y power bi, además de automatización de procesos para mejorar la eficiencia operativa. Nuestro equipo integra mejores prácticas de ingeniería con diseño de soluciones reales, desde APIs de alto rendimiento hasta analítica avanzada.
Palabras clave que guían nuestro trabajo: aplicaciones a medida, software a medida, inteligencia artificial, ia para empresas, agentes IA, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi.
Sigue el reto
Continuaré resolviendo y documentando problemas a diario en Python y C++, cubriendo arrays, listas, árboles, programación dinámica y más. Si te interesa un enfoque sistemático para elevar tus habilidades técnicas, mantente al tanto de los próximos días.