链表--删除链表的倒数第N个节点

38 阅读1分钟

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

输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]

代码:

public class RemoveNthFromEnd {
    public Node removeNthFromEnd(Node head, int n) {
        Node dummyHead = new Node(-1);
        dummyHead.next = head;
        Node slow = dummyHead;
        Node fast = dummyHead;
        while (n-- > 0 && fast != null) {
            fast = fast.next;
        }
        fast = fast.next;
        while (fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }
        slow.next = slow.next.next;
        return dummyHead.next;
    }
}