#并不需要二外的空间,就是一些细节特别狗血
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addInList(self , head1 , head2 ):
if not head1: return head2
if not head2: return head1
def reverse_link(root):
r=None
while root:
l=r
r=root
root=root.next
r.next=l
return r
ptr1=reverse_link(head1)
ptr2=reverse_link(head2)
i,ptr=0,ListNode(7) #初始进位,创建链表
sol=ptr
while ptr1 and ptr2:
tmp=ptr1.val+ptr2.val
sol.next=ListNode((tmp+i)%10) #当前值
sol=sol.next
i=(tmp+i)//10 #更新进位值
ptr1=ptr1.next
ptr2=ptr2.next
def remain_long(root,sol1,i): #判断剩余一个长位的情况
ptr=sol1
while root:
tmp=(root.val+i)
ptr.next=ListNode(tmp%10)
ptr=ptr.next
i=tmp//10
root=root.next
return sol1,i
if ptr1:
sol1,i=remain_long(ptr1,ListNode('TMP'), i)
sol.next=sol1.next
elif ptr2:
sol1,i=remain_long(ptr2,ListNode('TMP'), i)
sol.next=sol1.next
ptr=ptr.next
head=reverse_link(ptr)
if i>=1:
new_head=ListNode(i)
new_head.next=head
head=new_head
return head
# write code here