首先,用一个循环来得到链表的长度
然后把删除的节点分为第一个节点和其他节点,第一个节点删除方式和其他的不一样
删除节点,关键在于找到前一个节点位置,给的是倒数的数,例如有五个,删除倒数第二个,就是删除第四个,我们要找到第三个链表长度为m,删除倒数第n个,要找到第m-n个节点

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode removeNthFromEnd (ListNode head, int n) {
        // write code here
        int len=0;
        ListNode res=new ListNode(0);
        ListNode temp=head;
        while (temp!=null){//获得链表长度
            temp=temp.next;
            len++;
        }
        temp=head;
        int count=1;
        if (len==n){//判断是否是第一个节点
            res.next=head.next;
            return res.next;
        }else {
            while (count!=len-n){//这里我们要找到要删除的前一个节点,才可以删除目标节点
                temp=temp.next;
                count++;
            }
            temp.next=temp.next.next;//删除语句
        }
        return head;
    }
}