- 创建一个哑结点
dummy
作为结果链表的头部,用current
指针来追踪当前操作的节点。 - 使用
carry
变量来追踪进位。 - 迭代直到
l1
和l2
都为空,并且没有进位。 - 在每个迭代中,计算当前位置的值,更新进位,并将结果添加到结果链表中。
- 返回
dummy.next
作为最终的结果链表,跳过哑结点 -
class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: # 创建一个哑结点作为结果链表的头部 dummy = ListNode(0) current = dummy carry = 0 while l1 or l2 or carry: # 获取当前节点的值,如果节点为空则取0 val1 = l1.val if l1 else 0 val2 = l2.val if l2 else 0 # 计算当前位置的总和(包括进位) total = val1 + val2 + carry # 计算当前位置的进位和实际值 carry = total // 10 current.next = ListNode(total % 10) # 移动到下一个节点 current = current.next l1 = l1.next if l1 else None l2 = l2.next if l2 else None return dummy.next
leetcode 力扣 002 两数相加 python
于 2024-08-06 21:25:27 首次发布