Some dois números

Published by Evgeny SH in

A entrada da função consiste em duas listas encadeadas não vazias que representam dois inteiros não negativos. Os dígitos são armazenados em ordem inversa, e cada um de seus nós contém um único dígito. Some os dois números e retorne a soma como uma lista encadeada, na qual os dígitos também são armazenados em ordem inversa. A classe ListNode, componente básico da lista encadeada, está definida na aba Tests.

Definição da classe

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

Exemplos

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]

Observações

  • As listas encadeadas de entrada podem ter comprimentos diferentes.
  • A referência retornada deve apontar para o início da nova lista.