本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图,可以fork到自己仓库,有空看一看一定会有所收获,如果对你有帮助也给一个star支持一下吧!

思路

双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。

思路是这样的,但要注意一些细节。

分为如下几步:

  • 首先这里我推荐大家使用虚拟头结点,这样方面处理删除实际头结点的逻辑,如果虚拟头结点不清楚,可以看这篇: 链表:听说用虚拟头节点会方便很多?

  • 定义fast指针和slow指针,初始值为虚拟头结点,如图:

  • fast首先走n + 1步 ,为什么是n+1呢,因为只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作),如图:

  • fast和slow同时移动,之道fast指向末尾,如题:

  • 删除slow指向的下一个节点,如图:

此时不难写出如下C++代码:

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHead = new ListNode(0);dummyHead->next = head;ListNode* slow = dummyHead;ListNode* fast = dummyHead;while(n-- && fast != NULL) {fast = fast->next;}fast = fast->next; // fast再提前走一步,因为需要让slow指向删除节点的上一个节点while (fast != NULL) {fast = fast->next;slow = slow->next;}slow->next = slow->next->next;return dummyHead->next;}
};

我是程序员Carl,利用工作之余重刷leetcode,更多精彩算法文章尽在:代码随想录,关注后,回复「Java」「C++」「python」「简历模板」等等,有我整理多年的学习资料,可以加我微信,备注「简单自我介绍」+「组队刷题」,拉你进入刷题群(无任何广告,纯个人分享),每天一道经典题目分析,我选的每一道题目都不是孤立的,而是由浅入深一脉相承的,如果跟住节奏每篇连续着看,定会融会贯通。

以下资料希望对你有帮助:

  • 学习资料以及我的开源项目
  • 我的B站视频:算法和编程语言的讲解
  • leetcode刷题攻略
  • 程序员应该如何写简历(附简历模板)
  • 一线互联网公司技术面试的流程以及注意事项
  • C++面试&C++学习指南知识点整理

leetcode双指针法经典题目汇总:

  • 双指针法:移除元素
  • 双指针法:反转字符串
  • 双指针法:替换空格
  • 双指针法:翻转字符串里的单词
  • 双指针法:反转链表
  • 双指针法:环形链表II
  • 双指针法:三数之和
  • 双指针法:四数之和
  • 双指针法:总结篇!

19. 删除链表的倒数第N个节点【双指针经典应用】详解相关推荐

  1. [链表|多解法] leetcode 19 删除链表的倒数第N个节点

    [链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...

  2. Leetcode算法Java全解答--19. 删除链表的倒数第N个节点

    Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...

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

    题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表 ...

  4. leetcode 19. 删除链表的倒数第N个节点(双指针)

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

  5. leetcode —— 19. 删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

  6. 删除链表的倒数第n个节点 python_LeetCode 19.删除链表的倒数第N个节点(Python)

    题目: 给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表 ...

  7. 【亡羊补牢】挑战数据结构与算法 第59期 LeetCode 19. 删除链表的倒数第N个节点(链表)

    仰望星空的人,不应该被嘲笑 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. ...

  8. [leetcode]19.删除链表的倒数第N个节点

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] ...

  9. LeetCode 19删除链表的倒数第N个节点-中等

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: ...

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

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点.给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 输入:head = [1,2,3,4,5], n = 2 输出:[ ...

最新文章

  1. 一个已经存在 10 年,却被严重低估的库!
  2. 第九课.深度学习常见内容补充
  3. 校招社招必备核心前端面试问题与详细解答
  4. 使用Python画一朵玫瑰花
  5. JS获取请求URL相关参数
  6. 从堆里找回“丢失”的代码相关命令简介
  7. oracle函数 MIN([distinct|all]x)
  8. 值类型和引用类型的区别,应该很全的。
  9. 空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...
  10. Node.js开发指南中的例子(mysql版)
  11. RabbitMQ提升消息传输可靠性方法总结
  12. 3.Ubuntu/Deepin下安装Monaco/Menlo字体
  13. 「Java工具类」Apache的FileUtils和IOUtils工具类
  14. 中标麒麟Linux安装微信,中标麒麟微信群,剧透中标麒麟7.0
  15. 人脸识别帧数太低的解决方法
  16. PS|基础原理之‘图层混合模式’
  17. Java 五子棋 包含强大人机 步骤流程 包含源码
  18. 海德汉LSV2通讯协议
  19. Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)
  20. nwjs自动更新 node-webkit-updater

热门文章

  1. 设计模式六大原则-OCP
  2. JAVA 列表输入学生的信息
  3. 获取当前电脑全部网络连接名字
  4. 异地备份——windows 与 linux
  5. Web开发中最致命的8个小错误
  6. MOSS自带链接样式影响页面全局样式的解决办法
  7. wpf demo (gif , multithredading,httpwatch)
  8. 学习python:异常处理
  9. UILabel显示html文本
  10. Mac电脑上设置应用程序开机启动详细教程!速来get一下