删除链表的倒数第N个节点 力扣

    技术2025-05-26  37

     删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.

    说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    思路:双指针

    class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* header = new ListNode(0); //新建一个堆区的结点,防止访问空指针 header->next = head; ListNode* p = header; ListNode* q = header; for(int i=0; i<n+1; ++i) p = p->next; while(p != NULL){ p = p->next; q = q->next; } q->next = q->next->next; return header->next; } };

     

    Processed: 0.009, SQL: 9