A simple 2ms C solution
struct ListNode removeNthFromEnd(struct ListNode head, int n) {\n\n    struct ListNode front = head;\n    struct ListNode behind = head;\n    \n    while (front
struct ListNode *removeNthFromEnd(struct ListNode *head, int n) {\n\n    struct ListNode* front = head;\n    struct ListNode* behind = head;\n    \n    while (front != NULL) {\n        front = front->next;\n        \n        if (n-- < 0) behind = behind->next;\n    }\n    if (n == 0) head = head->next;\n    else behind->next = behind->next->next;\n    return head;\n}
[]