JSFiddle - React, Tailwind, and code Playground

by meddle

JavaScript

function ListNode(val) {
     this.val = val;
     this.next = null;
 }

// 1->2->3->4->5

var head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);

var printList = function (head) {
    var pointer = head;
    while (pointer !== null) {
        console.log(pointer.val);
        pointer = pointer.next;
    }
};

var removeNthFromEnd = function(head, n) {
    if (n <= 0) {
        return head;
    }
    
    var pointer1 = head,
        pointer2 = head,
        i = n;
    
    for (; pointer1 !== null; i--) {
        if (i < 0) {
            pointer2 = pointer2.next;
        }
        pointer1 = pointer1.next;
    }
    if (i === 0) {
        return head.next;
    }
    
    pointer2.next = pointer2.next.next;
    
    return head;
};

printList(removeNthFromEnd(head, 4));