给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
链表形式的题目
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
#记录两个节点的和
total = 0
#记录下个节点是否需要加1
next1 = 0
#构造新链表,可以复制的
dummy = ListNode()
cur = dummy
#判断表空不空
while(l1 != None and l2 !=None):
#total的值不会被覆盖的
total = l1.val + l2.val + next1
#新链表的下一个节点的值直接构造即可
cur.next = ListNode(total % 10)#取余后面
next1 = total // 10#取模前面
cur =cur.next
l1 = l1.next
l2 = l2.next
while l1!=None:
total = l1.val+next1
cur.next= ListNode(total % 10)
next1 = total //10
cur =cur.next
l1 = l1.next
while l2 != None:
total = l2.val+next1
cur.next = ListNode(total %10)
next1 = total//10
cur=cur.next
l2=l2.next
if next1 !=0:
cur.next = ListNode(next1)
return dummy.next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
total = l1.val+l2.val
next1 =total //10
res = ListNode(total%10)
if(l1.next or l2.next or next1):
#如果l1存在的话就是ll1.next否则就是 0节点
l1 = l1.next if l1.next else ListNode(0)
#如果l1存在的话就是ll1.next否则就是 0节点
l2 = l2.next if l2.next else ListNode(0)
l1.val = l1.val+next1
res.next = self.addTwoNumbers(l1,l2);
return res;