# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head1 ListNode类 # @param head2 ListNode类 # @return ListNode类 # class Solution: # 链表不能从后往前,需要先反转链表,从前往后,先定义反转函数 def reverseList(self,head:ListNode): if head==None: return None ''' cur,pre=head,None while cur: b=cur.next cur.next=pre pre=cur cur=b return pre''' a,a.next,b=head,None,head.next # 初始化 while b: # 当b非空时 b,a,a.next=b.next,b,a # 遍历 return a def addInList(self , head1: ListNode, head2: ListNode) -> ListNode: # write code here # 有至少一个空链表时 if not head1: return head2 if not head2: return head1 # 两个链表均不为空时 # 先反转 head1=self.reverseList(head1) head2=self.reverseList(head2) # 创建一个空链表 res=ListNode(-1) head=res # 填充空列表 carry=0 # 进位 while head1 or head2 or carry: # 当n1 n2有1个不为空时(可能有一个为空) val1=0 if not head1 else head1.val val2=0 if not head2 else head2.val a=val1+val2+carry carry=(int)(a/10) a=a%10 # 两值之和,除以10的余数 head.next=ListNode(a) head=head.next if head1: head1=head1.next # 当n1为空时,不再移动 if head2: head2=head2.next # 当n2为空时,不再移动 return self.reverseList(res.next)