1、題目:
給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。
請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。
你可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 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):
"""
循環(huán)兩個鏈表,記錄進位,最終返回結(jié)果
"""
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)