用快慢指针。快指针先走n步。之后快慢指针同时移动,快指针到达末尾时,慢指针到达自己的前一个的指针。
如果快指针到了null。表示链表的开头。返回head.next
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode fast = head, slow = head;
while(n!=0)
{
fast=fast.next;
n--;
}
if(fast==null)
return head.next;
while(fast.next!=null)
{
fast=fast.next;
slow=slow.next;
}
slow.next=slow.next.next;
return head;
}
}