Suma dos números

Published by Evgeny SH in

La entrada de la función consta de dos listas enlazadas no vacías que representan dos enteros no negativos. Los dígitos se almacenan en orden inverso y cada uno de sus nodos contiene un solo dígito. Suma los dos números y devuelve el resultado como una lista enlazada, cuyos dígitos también se almacenan en orden inverso. La clase ListNode, componente básico de la lista enlazada, está definida en la pestaña Tests.

Definición de la clase

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

Ejemplos

lt1 = ListNode(2)
lt1.add_data([4, 3])
lt2 = ListNode(5)
lt2.add_data([6, 4])
# print(lt1.get_data())    # [2, 4, 3]
# print(lt2.get_data())    # [5, 6, 4]
# print(342 + 465)         # 807
add_two_numbers(lt1, lt2).get_data() ➞ [7, 0, 8]
lt1 = ListNode(0)
lt2 = ListNode(0)
# print(lt1.get_data())    # [0]
# print(lt2.get_data())    # [0]
# print(0 + 0)             # 0
add_two_numbers(lt1, lt2).get_data() ➞ [0]
lt1 = ListNode(9)
lt1.add_data([9,9,9,9,9,9])
lt2 = ListNode(9)
lt2.add_data([9,9,9])
# print(lt1.get_data())    # [9, 9, 9, 9, 9, 9, 9]
# print(lt2.get_data())    # [9, 9, 9, 9]
# print(9999999 + 9999)    # 10009998
add_two_numbers(lt1, lt2).get_data() ➞ [8, 9, 9, 9, 0, 0, 0, 1]

Notas

  • Las listas enlazadas de entrada pueden tener longitudes diferentes.
  • La referencia devuelta debe apuntar a la cabeza de la nueva lista.