// Source : https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
// Date : 2022-5-31
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
int cnt = 0;
ListNode* h = head;
// 计算一共有多少节点数
while(h)
{
++cnt;
h = h -> next;
}
ListNode* front = new ListNode(0, head);
ListNode* rear = front;
// 定位到要删除的节点的前一个节点
// 不用考虑要删除的是不是最后一个节点,因为最后一个节点的后置节点也是nullptr
for (int i = 1; i < cnt - n + 1; ++i)
rear = rear -> next;
// 删除节点
rear -> next = rear -> next -> next;
// delete front;
return front -> next;
}
};



