反转两列表,然后从头加到尾
代码如下:
class Solution:
def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
p1 = self.reverseList(head1)
p2 = self.reverseList(head2)
head = None # 用于记录新链表的头结点
i = 0 # 记录进位
while p1 or p2 or i > 0:
if p1:
i += p1.val
p1 = p1.next
if p2:
i += p2.val
p2 = p2.next
temp = ListNode(i % 10)
if not head:
head = temp
h = head # 记录新链表的尾结点
else:
h.next = temp
h = h.next
i //= 10
return self.reverseList(head)
def reverseList(self, head) -> ListNode: # 反转链表
p = head
head = None
while p:
q = p.next
p.next = head
head = p
p = q
return head