python实现给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
时间: 2023-02-14 18:08:15 浏览: 160
python实现两个非空链表相加的方法如下:
1. 初始化一个新链表,用于存储结果。
2. 初始化进位carry为0。
3. 从两个链表的头部开始遍历,依次取出当前节点的值。
4. 将两个链表当前节点的值相加,再加上carry。
5. 如果和大于9,将carry设为1,否则设为0。
6. 将和对10取模,将结果添加到新链表的末尾。
7. 遍历完两个链表后,如果carry为1,再向新链表末尾添加一个1.
8. 返回新链表的头部。
代码示例:
```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()
current = dummy
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
current.next = ListNode(s % 10)
current = current.next
if l1:
l1 = l1.next
if l2:
l2 = l2.next
if carry:
current.next = ListNode(carry)
return dummy.next
```
注意链表的长度可能不同,需要判断是否已经遍历完。
阅读全文