Simple JavaScript 99% Solution with Comments
\nvar removeNthFromEnd = function(head, n) {\n    let nodeToReturn = head;\n    \n    //Have two pointers, one that is n ahead of the other\n    let pointer1 = 
```\nvar removeNthFromEnd = function(head, n) {\n    let nodeToReturn = head;\n    \n    //Have two pointers, one that is n ahead of the other\n    let pointer1 = head;\n    let pointer2 = head;\n    \n    //Move pointer2 to be n ahead\n    for(let i = 0; i<n;i++){\n        pointer2 = pointer2.next;\n    }\n    \n    //If pointer2 doesn\'t exist, that means we must remove the head of the list\n    if(!pointer2){\n        return nodeToReturn.next;\n    }\n    \n    //Move both pointers until pointer2 reaches the end\n    while(pointer2.next){\n        pointer1 = pointer1.next;\n        pointer2 = pointer2.next;\n    }\n\n    //Save the node two places ahead of pointer1;    \n    pointer1.next = pointer1.next.next;\n    \n    return nodeToReturn;\n};\n```
[]