My C# solution - One pass
Runtime: 92 ms, faster than 75.77% of C# online submissions for Remove Nth Node From End of List.\nMemory Usage: 24.8 MB, less than 10.00% of C# online submissi
Runtime: 92 ms, faster than 75.77% of C# online submissions for Remove Nth Node From End of List.\nMemory Usage: 24.8 MB, less than 10.00% of C# online submissions for Remove Nth Node From End of List.\n\n```\npublic ListNode RemoveNthFromEnd(ListNode head, int n) {\n    var left = head;\n    var right = head;\n\n    while(right != null) {\n        right = right.next;\n        if (n-- < 0) left = left.next; \n    } \n\n    if (n == 0) head = head.next;\n    else left.next = left.next.next;\n\n    return head;        \n}\n```
[]