给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字0之外,这两个数都不会以0开头。并且生成代码
时间: 2025-01-21 14:32:06 浏览: 61
这是一个经典的链表操作问题,通常称为“进位链表相加”。可以采用迭代或递归的方式来解决。这里给出一个基于迭代的解决方案:
首先,我们需要定义一个链表节点的类,然后创建一个函数`addTwoNumbers`来处理这个问题。以下是Python代码的实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0)
curr = dummy
carry = 0
while l1 or l2 or carry:
if l1:
carry += l1.val
l1 = l1.next
if l2:
carry += l2.val
l2 = l2.next
# 将当前结果添加到链表末尾,并考虑进位
curr.next = ListNode(carry % 10)
curr = curr.next
carry //= 10
return dummy.next
# 示例
l1 = ListNode(2, ListNode(4, ListNode(3))) # 243
l2 = ListNode(5, ListNode(6, ListNode(4))) # 564
result = addTwoNumbers(l1, l2) # 返回 700 (743)
```
这段代码定义了一个模拟链表的操作,从最低位开始逐位相加,同时处理进位。最后返回的结果是一个新的链表,代表了两数之和。
阅读全文
相关推荐














