Remove Nth Node From End of List

Given a linked list, remove the nthnode from the end of list and return its head.

Notice

The minimum number of nodes in list is n.

Example

Given linked list:1->2->3->4->5->null, andn=2.

After removing the second node from the end, the linked list becomes1->2->3->5->null.

Solution: slow-fast pointer. Remember that delete head pointer is a seperate situation.

public ListNode removeNthFromEnd(ListNode head, int n) {
    if(head == null) {
        return head;
    }
    ListNode fast = head;
    for(int i = 0; i < n; i++) {
        fast = fast.next;
    }
    if(fast == null) {
        return head.next;
    }
    ListNode slow = head;
    while(fast.next != null) {
        slow = slow.next;
        fast = fast.next;
    }
    slow.next = slow.next.next;
    return head;
}

results matching ""

    No results matching ""