Progreso diario de LeetCode – Día 15
Problemas resueltos: 83 Eliminar duplicados de una lista ordenada y 202 Número feliz. Sumo una racha de 15 días y refuerzo patrones de listas enlazadas y hashing.
Qué aprendí: hoy profundicé en el recorrido de listas enlazadas y en la detección de ciclos con estructuras de datos de hashing. En una lista ordenada, los duplicados siempre aparecen contiguos, así que basta con comparar el nodo actual con el siguiente y, si son iguales, reconectar el puntero para saltar el duplicado. En el caso del número feliz, transformamos el número en la suma de cuadrados de sus dígitos y usamos un conjunto para detectar si entramos en un ciclo.
83 Eliminar duplicados de una lista ordenada: tanto en Python como en C++ la idea es idéntica. Se itera con un puntero cur mientras exista cur y cur.next. Si cur.val es igual a cur.next.val, se salta el nodo duplicado ajustando cur.next al siguiente del siguiente. En caso contrario, se avanza cur al siguiente nodo. Al operar in place, solo se recorre la lista una vez y no se necesita memoria adicional.
Complejidad 83: tiempo O(n) por un único recorrido y espacio O(1) al no usar estructuras auxiliares.
202 Número feliz: empezamos con n y repetimos el proceso de convertirlo en la suma de los cuadrados de sus dígitos. Si alcanzamos 1, es un número feliz. Si volvemos a ver un valor anterior, hemos detectado un ciclo y podemos detenernos. Un conjunto seen permite marcar los estados ya visitados. Alternativamente, puede optimizarse a espacio O(1) aplicando la técnica de detección de ciclos de Floyd con punteros rápido y lento sobre la sucesión generada por n.
Complejidad 202: tiempo O(k), donde k es la longitud del camino hasta 1 más el tamaño del ciclo si existe, y espacio O(k) con conjunto o O(1) con Floyd.
Logros del día: consolidé la manipulación segura de punteros en listas enlazadas evitando desreferencias nulas y reforcé cómo la detección de ciclos con conjuntos replica la lógica clásica de ciclos en listas. Verifiqué soluciones conceptualmente equivalentes en Python y C++.
Si quieres llevar este rigor técnico a tus productos, en Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con enfoque en calidad, rendimiento y escalabilidad. Descubre cómo diseñamos soluciones multiplataforma en nuestro servicio de desarrollo de software y apps en desarrollo de aplicaciones y software multiplataforma.
También impulsamos ia para empresas con arquitecturas de agentes IA, MLOps y analítica avanzada. Conoce cómo nuestra agencia de inteligencia artificial acelera tus casos de uso en servicios de inteligencia artificial.
Nuestro ecosistema de capacidades incluye ciberseguridad y pentesting, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, automatización de procesos, integración de datos y gobierno del dato. Unimos prácticas de ingeniería sólidas con diseño de producto para maximizar impacto.
Resumen de complejidad: Eliminar duplicados de lista ordenada tiempo O(n) y espacio O(1). Número feliz tiempo O(k) y espacio O(k) con conjunto o espacio O(1) con Floyd. Más allá de los ejercicios, estos patrones son componentes críticos al construir pipelines de datos robustos, microservicios eficientes y motores de decisión en tiempo real.
Día 15 superado. Mantener la constancia diaria durante más de dos semanas se nota en la claridad mental para estructurar soluciones y en la disciplina de probar, medir y simplificar. Seguimos mañana con más retos, patrones y buenas prácticas.