0
点赞
收藏
分享

微信扫一扫

牛客BM9. 删除链表的倒数第n个节点

毅会 2022-04-04 阅读 64
牛客C++

Description:

题目大意:删除单项链表的倒数第n个节点

解题思路:

算法标签:双指针

  1. 设置虚拟头节点
  2. 设置双指针 pre 和 last,使其两个指针相隔 n 个元素
  3. 双指针同时右移,直到 last 为 NULL
  4. 删除 pre 的下一个元素
  5. 返回 head

代码:

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* dummyhead = new ListNode(0);
        dummyhead -> next = head;
        
        ListNode* pre = dummyhead;
        ListNode* last = dummyhead;
        
        for(int i = 0;i < n+1;i++) 
            last = last -> next;
        while(last != NULL) {
            pre = pre -> next;
            last = last  -> next;
        }
        
        ListNode* delNode = pre -> next;
        pre -> next = delNode -> next;
        delete delNode;
        return dummyhead -> next;
    }
};
举报

相关推荐

0 条评论