---
# System prepended metadata

title: 19. Remove Nth Node From End of List
tags: [C++, LeetCode-Medium]

---

# 19. Remove Nth Node From End of List
Difficulty: Medium

## Solution

```cpp=
/**
*** Author: R-CO
*** E-mail: daniel1820kobe@gmail.com
*** Date: 2020-09-01
**/
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
struct ListNode {
  int val;
  ListNode* next;
  ListNode() : val(0), next(nullptr) {}
  ListNode(int x) : val(x), next(nullptr) {}
  ListNode(int x, ListNode* next) : val(x), next(next) {}
};

class Solution {
 public:
  ListNode* removeNthFromEnd(ListNode* head, int n) {
    vector<ListNode*> vec;
    ListNode* ptr = head;

    while (ptr != nullptr) {
      vec.emplace_back(ptr);
      ptr = ptr->next;
    }

    int index = static_cast<int>(vec.size()) - n;
    if (index > 0) {
      vec[index - 1]->next = vec[index]->next;
    } else {
      head = head->next;
    }

    return head;
  }
};

void DisplayList(ListNode* head) {
  while (head != nullptr) {
    cout << head->val << " ";
    head = head->next;
  }
}

void ReleaseList(ListNode* head) {
  while (head != nullptr) {
    auto ptr = head;
    head = head->next;
    delete ptr;
  }
}

int main(int argc, char* argv[]) {
  /*
    
  */
  auto head = new ListNode(1);
  auto ptr = head;
  for (int i = 2; i <= 5; ++i) {
    ptr->next = new ListNode(i);
    ptr = ptr->next;
  }

  DisplayList(head);
  cout << endl;

  Solution solution;
  head = solution.removeNthFromEnd(head, 5);

  DisplayList(head);
  cout << endl;

  ReleaseList(head);

  return EXIT_SUCCESS;
}

```

## Result

Success
Details 
Runtime: 4 ms, faster than 83.97% of C++ online submissions for Remove Nth Node From End of List.
Memory Usage: 10.7 MB, less than 8.08% of C++ online submissions for Remove Nth Node From End of List.

###### tags: `LeetCode-Medium` `C++`
