
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverse(self, head): # 链表反转
pre = head
cur = head.next
pre.next = None
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
l1 = self.reverse(l1)
l2 = self.reverse(l2)
h = ListNode((l1.val + l2.val) % 10) # 额外记下头结点,方便后续反转链表
flag = (l1.val + l2.val) // 10
p = h
l1 = l1.next
l2 = l2.next
while l1 or l2 or flag:
if l1 and l2:
node = ListNode((l1.val + l2.val + flag) % 10)
flag = (l1.val + l2.val + flag) // 10
l1 = l1.next
l2 = l2.next
elif l1:
node = ListNode((l1.val + flag) % 10)
flag = (l1.val + flag) // 10
l1 = l1.next
elif l2:
node = ListNode((l2.val + flag) % 10)
flag = (l2.val + flag) // 10
l2 = l2.next
elif flag:
node = ListNode(flag)
flag = 0
p.next = node
p = node
return self.reverse(h)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)