Progreso diario de LeetCode – Día 18

Resumen diario de LeetCode: intersección de listas enlazadas con dos punteros y diámetro de un árbol binario con DFS. Patrones, complejidad y aplicaciones en software a medida.

domingo, 7 de septiembre de 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

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.

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.