1、题目:
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
2、代码
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
循环两个链表,记录进位,最终返回结果
"""
cur=0
n1,n2=l1,l2
head=ListNode()
node=head
while n1 or n2 or cur:
if n1:
cur+=n1.val
n1=n1.next
if n2:
cur+=n2.val
n2=n2.next
node.next=ListNode(cur%10)
node=node.next
cur//=10
return head.next
3、示例
s=Solution()
l1=ListNode();#l1:[2,4,3]
l1.val=2; l1.next=ListNode(4);l1.next.next=ListNode(3)
l2 = ListNode()#l2:[5, 6, 4]
l2.val=5;l2.next=ListNode(6);l2.next.next=ListNode(4)
res=s.addTwoNumbers(l1=l1,l2=l2)
print(res)