Day10 代码随想录打卡|链表篇---删除链表的倒数第N个节点

题目(leecode T19):

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

方法:双指针法

思路:定义两个指针同时指向虚拟的头节点,然后让快指针向后移动n+1个节点,随后两个指针同时向后移动,当快指针移动到链表结尾的NULL时,慢指针指向的就是要被删除节点的前一个位置,就比较方便后续的删除。

心路历程:要删除倒数第n个节点,先让快指针移动n位,相当于让快慢指针之间有了n个节点的距离差值,当快指针走到最后NULL时,慢指针与快指针之间的距离还是n,那么慢指针指向的自然就是倒数第n个节点。

题解:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;
        ListNode* fast = dummyHead;
        ListNode* slow = dummyHead;
        while(n-- && fast != NULL){
            fast = fast->next;
        }
        fast = fast->next;               //fast要移动n+1位,使得slow在要删除节点的前一个
        while(fast != NULL){
            slow = slow->next;
            fast = fast->next;
        }
        ListNode* temp = slow->next;
        slow->next = temp->next;
        delete temp;
        return dummyHead->next;
    }
};

相关推荐

  1. 19.删除倒数N节点

    2024-04-24 20:24:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

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

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

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

    2024-04-24 20:24:02       20 阅读

热门阅读

  1. 异步并发怎么做?

    2024-04-24 20:24:02       12 阅读
  2. 第三方包的info文件夹作用

    2024-04-24 20:24:02       8 阅读
  3. 服务运维篇-通过防火墙抵御渗透扫描

    2024-04-24 20:24:02       11 阅读
  4. K8s: 持久化存储之卷, NFS卷

    2024-04-24 20:24:02       11 阅读
  5. linux安装SSH

    2024-04-24 20:24:02       13 阅读
  6. 构建数据安全体系:详解数据治理的建设思路

    2024-04-24 20:24:02       11 阅读
  7. [Unity]打包Android后xxx方法丢失。

    2024-04-24 20:24:02       12 阅读
  8. IntelliJ IDEA个人可一直使用方法参考

    2024-04-24 20:24:02       11 阅读
  9. 任务修复实例(4)

    2024-04-24 20:24:02       10 阅读
  10. ubuntu 23.04 Dell T3660 听歌没声音的尝试

    2024-04-24 20:24:02       13 阅读
  11. Qt实现XYModem协议(八)

    2024-04-24 20:24:02       14 阅读