class Solution:
def removeNthFromEnd(self , head , n ):
#方法:设两个指针p1和p2,并增设头结点pH,两个指针都从头指针开始,
#待p1走了n+1步之后,p2再开始和p1一起走,直到p1为空为止,
#此时p2的后继节点就是要被删除的结点,那么如果p2以及p2的后继节点均不为空,
#就直接把p2后继结点删掉就行了,然后返回pH的后继指针;
pH=ListNode(0)
pH.next=head
p1,i=pH,0
while p1 and i<=n:
i+=1
p1=p1.next
p2=pH
while p1:
p1=p1.next
p2=p2.next
if p2 and p2.next:p2.next=p2.next.next
return pH.next