删除链表的倒数第n个节点,双指针实现

删除链表的倒数第n个节点,双指针实现

 

/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode() {}

 *     ListNode(int val) { this.val = val; }

 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }

 * }

 */

class Solution {

    public ListNode removeNthFromEnd(ListNode head, int n) {

        ListNode h,q,r,t;

        h=new ListNode();

        h.next=head;

        q=t=h;

        r=h.next;

        for(int i=0;i<n;i++){

            t=t.next;

        }

        while(t.next!=null){

            t=t.next;

            q=q.next;

            r=r.next;

        }

 

        q.next=r.next;


 

        return h.next;

    }

}