Этот код не имеет абсолютно никакого эффекта:
temp2 = output.next
while temp2 != None:
temp2 = temp2.next
temp2 = temp
Значение temp2
обновляется, пока не достигнет None
, а затем его заменят на temp
.После этого temp2
никогда не используется и не является temp
.Они оба переназначаются с новыми значениями, которые не зависят от результата этой операции.
Поскольку temp
назначается новый ListNode
, который ни с чем не связан и никогда не изменяется, ListNode
выйдет из области видимости и исчезнет.
Единственное, что здесь происходит, это присвоение carrybit
, которое используется только в ListNode
, который будет уничтожен.
Весьв то время как цикл в конечном итоге ничего не делает.
Я бы предложил несколько менее замысловатый подход:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
output = None
lastNode = None
carry = 0
while not (l1 is None and l2 is None):
if l1 : carry,l1 = l1.val+carry,l1.next
if l2 : carry,l2 = l2.val+carry,l2.next
nextNode = ListNode(carry%10)
carry = carry // 10
if output: lastNode.next = nextNode
else : output = nextNode
lastNode = nextNode
if carry:
lastNode.next = ListNode(carry%10)
return output