原问题是一次循环把链表后面第i个元素去掉 如1-2-3-4-5 去掉第二个就变成了 1-2-3-5
关键是对于一个链表,只进行一次循环找到后面第i个元素
可以使用递归调用找到倒数第i个元素,把该元素前面的值进行替换,最后从返回第二个元素即可.
class Solution(object):
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
def index(x):
if(not x):
return 0
i=index(x.next)+1
if(i>n):
x.next.val=x.val
return(i)
index(head)
return(head.next)