思路:重新创建两个ListNode实例来指向head作计算长度和删除的操作,尽量少的直接用head操作。
这里需要考虑的问题:
1.当倒数第n个节点是链表的第一个节点,那么就没有del.next=del.next.next了,因为删除第一个节点只需要返回head.next即第一个节点之后的即可。
2.循环应该从i=1开始,且判断的是i是否等于size-n(长度-n)即是否到达删除的节点

import java.util.*;

    public ListNode removeNthFromEnd (ListNode head, int n) {
        ListNode del=head;    //作删除使用
        ListNode headSize=head;  //作计算长度使用
        int size=0;
        while(headSize!=null){
            size++;
            headSize=headSize.next;
        }
        if(size==n) {
            return head.next;
        }
        int i=1;
        while(i!=size-n){
            i++;
            del=del.next;
        }
        del.next=del.next.next;
        return head;
    }