Remove Nth Node From End of List

Remove Nth Node From End of List

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


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

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

The minimum number of nodes in list is n.


O(n) time

Solution: One Pass using Fast Slow Pointers

O(n) time, O(1) space

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



Leave a Reply

Your email address will not be published. Required fields are marked *