力扣两数相加python3
时间: 2024-06-03 20:05:15 浏览: 18
力扣(LeetCode)的两数相加题目是一道比较经典的链表题目,要求实现一个函数,输入两个非空的链表,表示两个非负整数,将它们相加并返回一个新的链表。具体地,假设这两个非负整数分别为 num1 和 num2,它们的位数是按照逆序方式存储的,并且它们的每个节点只能存储一位数字。
以下是 Python3 的解法:
```python
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
# 创建一个新链表 head 和一个节点 cur,初始化为 None
head = cur = ListNode(None)
# carry 表示进位,初始化为 0
carry = 0
# 遍历两个链表,直到两个链表都为空
while l1 or l2:
# x 和 y 分别表示两个链表当前节点的值,如果当前节点为空,则默认值为 0
x = l1.val if l1 else 0
y = l2.val if l2 else 0
# 计算两个节点的和,以及进位 carry
total = x + y + carry
carry = total // 10
# 将当前节点的值插入到新链表中
cur.next = ListNode(total % 10)
cur = cur.next
# 如果链表不为空,则继续遍历
if l1:
l1 = l1.next
if l2:
l2 = l2.next
# 如果最后一位有进位,则需要在新链表中插入一个节点
if carry:
cur.next = ListNode(carry)
# 返回新链表的头节点
return head.next
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)