class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode:
    carry = 0
    head = ListNode(0)
    current = head
    while l1 or l2 or carry:
        val1 = l1.val if l1 else 0
        val2 = l2.val if l2 else 0
        val = val1 + val2 + carry
        carry = val // 10
        current.next = ListNode(val % 10)
        current = current.next
        l1 = l1.next if l1 else None
        l2 = l2.next if l2 else None
    return head.next

首先,我们定义一个 ListNode 类,表示链表节点。每个节点包含一个整数值和一个指向下一个节点的指针。

接着,我们定义一个名为 addTwoNumbers 的函数,接受两个参数 l1l2,分别表示要相加的两个链表。

我们使用 carry 变量来表示进位,初始化为 0。我们还创建一个名为 head 的 ListNode 对象,作为新链表的头节点,并创建一个名为 current 的指针,指向新链表的尾节点。

我们使用 while 循环来遍历两个链表,以及进位。如果 l1 或 l2 或 carry 不为空,我们就进入循环体。

在循环体内,我们分别获取 l1 和 l2 的当前节点的值,如果它们为空,则值为 0。我们将这两个值和 carry 相加,得到当前位的和 val。然后,我们计算新的进位值 carry,并将当前位的值加入新链表中。

最后,我们将 l1 和 l2 的指针向前移动一位,如果它们为空,则将对应的值设为 None。

最后,我们返回新链表的头节点(head.next)

给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。请你将两个数相加并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外这两个数都不会以 0 开头。通过python实现

原文地址: https://www.cveoy.top/t/topic/eQvP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录