class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
"""创建一个空链表,p、q指向头节点,q用来最后返回,p用来遍历"""
p = q = ListNode(0)
val = 0
while val or l1 or l2:
val, cur = divmod(val + (l1.val if l1 else 0) + (l2.val if l2 else 0), 10)
"""等效于
sum 存储两节点数值 以及 进位标志位 三者相加的结果
sum = val + (l1.val if l1 else 0) + (l2.val if l2 else 0)
cur = sum % 10 #取余
val = sum // 10 #取整"""
#创建新链表
p.next = ListNode(cur)
p = p.next
l1 = l1.next if l1 else None
l2 = l2.next if l2 else None
return q.next
"""创建链表"""
def generateList(l: list) -> ListNode:
p = q = ListNode(0)
for val in l:
p.next = ListNode(val)
p = p.next
return q.next
"""输出链表"""
def printList(l: ListNode):
while l:
print("%d, " % (l.val), end='') #end = ''表示结尾加空格不换行
l = l.next
print('')
if __name__ == "__main__":
l1 = generateList([2, 4, 3])
l2 = generateList([5, 6, 4])
printList(l1)
printList(l2)
s = Solution()
printList(s.addTwoNumbers(l1, l2))
转载请注明原文地址:https://blackberry.8miu.com/read-32672.html