Я выполняю LeetCode Problem 445 . Вопрос в том, что вам даны два непустых связанных списка, представляющих два неотрицательных целых числа. На первом месте стоит старший значащий элемент di git, и каждый из их узлов содержит по одному значению di git. Добавьте два числа и верните их как связанный список.
Вы можете предположить, что два числа не содержат ни одного начального нуля, кроме самого числа 0. " Я попытался решить это самостоятельно, реализовав два стека и добавив сумму чисел перед узлом, когда я выскочил из стека. Но мой вывод возвращает пустой список.
Пример:
Ввод: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) Выход: 7 -> 8 -> 0 -> 7
Вот код.
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
s1 = []
s2 = []
#push all elements onto stack
while l1!=None:
s1.append(l1.val)
l1 = l1.next
while l2!=None:
s2.append(l2.val)
l2 = l2.next
#create dummy node
dummy = ListNode(0)
l3 = dummy
carry=0
while len(s1)>0 or len(s2)>0:
l1_value = l2_value = 0
if len(s1)>0:
l1_value = s1.pop()
if len(s2)>0:
l2_value = s2.pop()
#do addition
curr_sum = l1_value + l2_value + carry
carry = curr_sum//10
last_digit = curr_sum%10
#add the new node to front of the linked list
new_node = ListNode(last_digit)
new_node.next = l3
l3 = new_node
if carry>0:
new_node = ListNode(carry)
head = ListNode(new_node)
head.next = l3
l3 = head
return dummy.next