Resolviendo Add Two Numbers de LeetCode: Iterativo y Recursivo, Parte 1. Si has practicado entrevistas técnicas probablemente conozcas el problema Add Two Numbers de LeetCode. Es un clásico que evalúa comprensión de listas enlazadas, manejo de acarreo y, en algunos casos, recursión. En este artículo explicamos paso a paso el planteamiento y ofrecemos dos soluciones claras: una iterativa directa y otra recursiva elegante.

Planteamiento del problema. Nos dan dos listas enlazadas no vacías donde cada nodo contiene un dígito y los dígitos están almacenados en orden inverso. Debemos sumar ambos números y devolver el resultado como una nueva lista enlazada también en orden inverso. Por ejemplo, l1 = [2,4,3] y l2 = [5,6,4] representan 342 y 465; la suma es 807 y debe devolverse como [7,0,8]. La ventaja del orden inverso es que emula la suma manual empezando por el dígito menos significativo y guardando un acarreo.

Retos principales: recorrer ambas listas simultáneamente, gestionar listas de distinta longitud, calcular y propagar el acarreo y construir la lista resultado sobre la marcha.

Solución 1 Iterativa. Esta es la más directa y robusta. Recorremos las dos listas con un while mientras haya nodos en l1 o l2 o exista acarreo. Usar un dummyNode simplifica el manejo del primer nodo. Código en Python como ejemplo práctico: class Solution(object): def addTwoNumbers(self, l1, l2): dummyNode = ListNode(0) current = dummyNode carry = 0 while l1 or l2 or carry != 0: val1 = l1.val if l1 else 0 val2 = l2.val if l2 else 0 total_sum = val1 + val2 + carry carry = total_sum // 10 digit = total_sum % 10 current.next = ListNode(digit) current = current.next if l1: l1 = l1.next if l2: l2 = l2.next return dummyNode.next. Explicación breve: inicializamos dummyNode y current, carry a 0; el bucle maneja listas de distinto tamaño y el acarreo final; si una lista se agota usamos 0 como valor; creamos y enlazamos nodos con el dígito calculado y devolvemos dummyNode.next como cabeza real del resultado.

Solución 2 Recursiva. La recursión puede ser más concisa y refleja de forma natural la idea de sumar el dígito actual y delegar el resto al llamado recursivo. La función recibe l1, l2 y carry. Código conceptual en Python: class Solution(object): def addTwoNumbers(self, l1, l2, carry=0): if not l1 and not l2 and not carry: return None val1 = l1.val if l1 else 0 val2 = l2.val if l2 else 0 total_sum = val1 + val2 + carry carry = total_sum // 10 digit = total_sum % 10 newNode = ListNode(digit) next_l1 = l1.next if l1 else None next_l2 = l2.next if l2 else None newNode.next = self.addTwoNumbers(next_l1, next_l2, carry) return newNode. Explicación: la base de la recursión ocurre cuando no quedan nodos y no hay acarreo; en cada llamada calculamos el dígito actual y delegamos la construcción del resto de la lista a la llamada recursiva con los siguientes nodos y el nuevo acarreo.

Comparación de enfoques. Complejidad temporal ambas O(n) donde n es la longitud de la lista más larga. La diferencia clave es la memoria: la versión iterativa usa espacio extra constante O(1) además del resultado, mientras que la recursiva usa O(n) por la pila de llamadas, lo que en listas muy largas puede provocar desbordamiento de pila. La elección suele depender de preferencias de legibilidad y restricciones de entorno.

Buenas prácticas y variaciones. Validar nodos nulos antes de acceder a sus campos, mantener el manejo del acarreo claro y preferir el dummyNode para evitar casos especiales del primer nodo. Este patrón es útil en muchas operaciones con listas enlazadas y es una buena base para problemas más complejos que involucran suma, resta o mezcla de números representados por listas.

Sobre Q2BSTUDIO. En Q2BSTUDIO somos especialistas en desarrollo de software a medida y en crear aplicaciones a medida que resuelven necesidades reales de negocio. Aplicamos técnicas avanzadas de inteligencia artificial e implementamos soluciones de ia para empresas, incluyendo agentes IA y modelos integrados para automatizar tareas. También ofrecemos servicios de ciberseguridad y pentesting para proteger tus aplicaciones y datos, así como servicios cloud aws y azure para desplegar y escalar tus soluciones. Si necesitas desarrollar una plataforma personalizada confía en nuestro equipo de expertos en software a medida y aplicaciones a medida y explora nuestras capacidades en software a medida y en inteligencia artificial para empresas. Además ofrecemos servicios inteligencia de negocio y power bi para transformar datos en decisiones estratégicas y soporte en servicios cloud para arquitectura segura y escalable.

Conclusión. Add Two Numbers es un ejercicio excelente para reforzar conceptos de listas enlazadas, acarreo y recursión. La versión iterativa es práctica y eficiente en memoria; la recursiva es elegante y directa pero costosa en pila. Practicar ambos enfoques mejora la versatilidad de cualquier desarrollador. Si quieres llevar estas buenas prácticas al desarrollo de tus productos y beneficiarte de soluciones como automatización de procesos, agentes IA, servicios inteligencia de negocio o integraciones en la nube, en Q2BSTUDIO podemos ayudarte a diseñar y construir la solución adecuada.

¿Con cuál enfoque te quedas tú? En Q2BSTUDIO estamos listos para ayudar con proyectos de software, aplicaciones a medida, ciberseguridad, servicios cloud aws y azure y más. Contáctanos para convertir tus retos técnicos en soluciones escalables.