给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

    分析:
    链表题其实有很多都是双指针,或是称为快慢指针的解法。这道题主要是要学会虚拟头结点的使用,所谓虚拟头结点,就是在所给头结点的前面再新建一个新的值为0的节点。这样做的好处是可以防止需要删除的对象为头结点这种情况。

    参考代码:
    public ListNode removeNthFromEnd(ListNode head, int n) {
    ListNode pre=new ListNode(0);
    pre.next=head;
    ListNode slow=pre,fast=pre;
    while(n!=0){
    fast=fast.next;
    n—;
    }
    fast=fast.next;
    while(fast!=null){
    fast=fast.next;
    slow=slow.next;
    }
    slow.next=slow.next.next;
    return pre.next;
    }