删除链表的倒数第n个节点_牛客题霸_牛客网 (nowcoder.com)
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
ListNode* removeNthFromEnd(ListNode* head, int n) {
// write code here
ListNode* res = new ListNode(0); //新建头节点
res->next = head; //连接
ListNode* pre = res; //处理指针
ListNode* fast = head, * slow = head; //快慢指针
for (int i = 0; i < n; i++) {
fast = fast->next;
}
while (fast) {
fast = fast->next;
pre = slow;
slow = slow->next;
}
//将要删除的结点的前一个结点和后一个结点联系起来
pre->next = slow->next;
return res->next;
}
};