思路:快慢指针,快指针先走n步,然后快慢一起走,直到快指针走到最后,要注意的是可能是要删除第一个节点,这个时候可以直接返回head -> next
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head==null | head.next==null) return null;
ListNode k = head;
ListNode m = head;
int i = 0;
int len = 0;//记录链表
while (k!=null){
len++;
k = k.next;
i++;
if(i>n+1){
head = head.next;
}
}
if(n==len)return m.next;
head.next = head.next.next;
return m;
}