【发布时间】:2021-06-09 00:11:30
【问题描述】:
我找到了添加两个链表 l1 和 l2 的数字的解决方案(其中数字已颠倒)
例如
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807
代码如下:
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
head=l3=ListNode()
carry=0
while l1 or l2:
x = l1.val if l1 else 0
y = l2.val if l2 else 0
s=carry+x+y
if s>9:
carry = 1
else:
carry = 0
s=s%10
l3.next=ListNode(s)
l3=l3.next
if l2:
l2=l2.next
if l1:
l1=l1.next
if carry==1:
l3.next=ListNode(1)
return head.next
我的问题只是与两条l3.next 行有关(有两条)。对于第一个l3.next = ListNode(s),我可以看到我们只是将 l3 与一个新节点 ListNode(s) 连接起来——它保存了之前计算的值 s。
但是,我不太明白 l3.next = ListNode(1) 的作用!有任何想法吗?我可以理解它-我们说if carry==1(即前两位数字的总和> 9)然后我们将l3连接到值为1的新节点?
或者l3.next = ListNode(1)'在l3之后的节点上加1?';这对我来说仍然没有意义,因为s=carry+x+y 会考虑进位。
【问题讨论】:
标签: python linked-list