# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 is None: #如果一个链表为空,则返回另一个
return l2
if l2 is None:
return l1
tmp = ListNode(0) #将链表的初始节点赋值给tmp
res = tmp #赋值
carry = 0 #进位位初始化
while l1 or l2: #l1或l2不为零时继续循环
tmp_sum = 0 #初始化求和变量
if l1: #如果链表l1不为零,将某节点的值放入求和变量并将l1中的值改为下个结点的地址
tmp_sum = l1.val
l1 = l1.next
if l2: #同理,将某节点值加入求和变量,并下节点地址
tmp_sum += l2.val
l2 = l2.next
tmp_res = ((tmp_sum + carry) % 10)
#将求和的值取余赋给res(本位的值)
carry = ((tmp_sum + carry) // 10)
#将求和的值取整赋给carry(进位的值)
res.next = ListNode(tmp_res) #将tmp_res的值放到res的下个节点处
res = res.next #res后移
if carry : #如果carry不为零,则对应位置相加有进位
res.next = ListNode(1) #将1放入res的下个节点处
res = tmp.next #赋值
return res #返回res链表
两数之和
最新推荐文章于 2023-07-18 20:50:26 发布