力扣19. 删除链表的倒数第 N 个结点

Problem: 19. 删除链表的倒数第 N 个结点

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

1.创建虚拟头节点dummy指向并将其next指向head;指针fast、slow指向dummy;
2.遍历链表获取其长度len;
3.先使fast走n + 1步,再使(当fast不为空时)slow与fast同时往后每一次移动一位;
4.删除节点slow -> next = slow -> next -> next;
5.返回dummy -> next;(注意:在该代码中创建dummy节点也是为了更好的处理删除的节点是头节点的情况)

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为链表的长度

空间复杂度:

O ( 1 ) O(1) O(1)

Code

/**
 * 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) {}
 * };
 */
class Solution {
public:
    /**
     * Two pointer
     * @param head The head node of linked list
     * @param n The penultimate NTH number
     * @return ListNode*
     */
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* p = head;
        int len = 0;
        while (p != nullptr) {
            len++;
            p = p -> next;
        }
        if (n > len) {
            return nullptr;
        }
        ListNode* dummy = new ListNode(INT_MIN);
        dummy -> next = head;
        ListNode* fast = dummy;
        ListNode* slow = dummy;
        for (int i = 0; i < n + 1; ++i) {
            fast = fast -> next;
        }
        while (fast != nullptr) {
            slow = slow -> next;
            fast = fast -> next;
        }
        slow -> next = slow -> next -> next;
        return dummy -> next;
    }
};

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 19:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 19:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 19:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 19:12:02       20 阅读

热门阅读

  1. 【接着模拟赛】2024.4.14

    2024-04-14 19:12:02       17 阅读
  2. 239. 滑动窗口最大值

    2024-04-14 19:12:02       14 阅读
  3. win10清华源按装OPENCV和其他软件

    2024-04-14 19:12:02       16 阅读
  4. Csharp_pta2

    2024-04-14 19:12:02       14 阅读
  5. 中文域名有必要注册吗?

    2024-04-14 19:12:02       14 阅读
  6. conda搭建与管理python环境

    2024-04-14 19:12:02       14 阅读
  7. 为什么我们应该切换到Rust

    2024-04-14 19:12:02       13 阅读
  8. 源码安装 clr - hip runtime

    2024-04-14 19:12:02       12 阅读
  9. 【C++】vector的模拟实现

    2024-04-14 19:12:02       17 阅读
  10. AI技术创业有哪些机会?

    2024-04-14 19:12:02       15 阅读
  11. 安装IntelliJ IDEA插件教程

    2024-04-14 19:12:02       17 阅读