假设这两个数字不包含任何前导零,除了数字0本身。
思路:先判断两个输入链表是否为空,为空则返回另一个;定义一个头指针,进位为0,进入一个循环,只有当两个链表节点都为空时才结束循环。计算每一位上的和,l1,l2和进位,若l1,l2为空,则不加,防止链表长度不一的情况。定义一个链表节点,将和对10求余做为下一个链表节点的值,判断定位。最后循环完成,判断进位,销毁头指针。
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1, l2):
if not l1:
return l2
if not l2:
return l1
root=ListNode(0)
loca = root
carry = 0
while (l1 or l2):
sum = 0
if l1:
sum+=l1.val
l1 = l1.next
if l2:
sum+= l2.val
l2 = l2.next
sum +=carry
loca.next = ListNode(sum % 10)
loca = loca.next
carry = (sum >= 10)
if carry !=0:
loca.next = ListNode(1)
loca = root.next
del root
return loca