medium
, math
Question
两个非空链列代表两个非负数。 每个非负数的digits以倒序存储,链列每个节点存储一个digit。将两个非负数相加,并以链列形式返回结果
Notes
假设两个非负数没有leading 0, 除了0本身
Example
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
Solution
从左往右相加,设置一个变量追踪两数相加是否进位。需要注意的是一个数可能比另外一个数长的情况。另外就是最后一位进位的问题(不要忽略)
下面的解法依然借助dummyHead.
dummyHead = ListNode(0)
p, q, cur = l1, l2, dummyHead
carry = 0
while p != None or q != None:
x = p.val if p != None else 0
y = q.val if q != None else 0
digit = x+y+carry
carry = digit/10
cur.next = ListNode(digit%10)
cur = cur.next
if p != None:
p = p.next
if q != None:
q = q.next
if carry > 0:
cur.next = ListNode(carry)
return dummyHead.next