难度中等6788收藏分享切换为英文接收动态反馈
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
re = ListNode(0)
r=re
carry=0
while(l1 or l2):
x= l1.val if l1 else 0
y= l2.val if l2 else 0
s=carry+x+y
carry=s//10
r.next=ListNode(s%10)
r=r.next
if(l1!=None):l1=l1.next
if(l2!=None):l2=l2.next
if(carry>0):
r.next=ListNode(1)
return re.next
总结:
- 判断l1和l2两个链表是否都结束了,如果l1和l2没结束则分别将l1和l2的值赋值给x和y
- carry = res // 10 :检查是否有进位
- 计算结构保存在一个单节点
- 保存节点插入链表尾部
- 当l1和来l2结束后判断还有无多余进位,有的话继续操作下插入链表末尾就是结果了