关于链表【力扣19.删除链表的倒数第N个节点的思考】

目录

一、注意思想

二、本题精髓

三、关键思路

四、本题题目和代码

五、注意事项


一、注意思想

1、注意快慢指针的思想不仅可以用在数组,还可以用在链表

2、注意虚拟头节点思想

二、本题精髓

让快指针先走n+1步

三、关键思路

(加入虚拟头节点,快慢指针初始指向虚拟头节点)

1、让快指针先走n+1步

2、然后快慢指针同时向前走(fast指针为空之时,慢指针走到要删除的节点的前一个位置)

3、执行删除操作

四、本题题目和代码

五、注意事项

1、链表类的题目尽可能都用虚拟头节点(因为涉及到一些操作可能会导致当前头节点会变)

// 比如这道题如果要删倒数第5个节点,头节点就变了。

// 用虚拟头节点的话,最后直接返回虚拟头节点的下一个节点就行

//(不需要考虑是否删除的是头节点,方便操作)

2、while(n-- && fast != nullptr)只能保证fast先走n步,后面要手动多走1步

3、觉得自己思路正确,但是运行不过去的时候,回去检查一下是不是有地方漏东西了

相关推荐
hold?fish:palm7 小时前
30 两两交换链表中的节点
数据结构·算法·链表
Nil2087 小时前
leetcode 98验证二叉搜索树
算法·leetcode·职场和发展
kkkkkkkkkk_Z7 小时前
学嵌入式和C语言编程数据结构|学习日记Day21:内核链表与队列学习
c语言·数据结构·学习
不正经学生7 小时前
C语言结构体:自定义数据类型,让变量打包出行
java·c语言·开发语言·数据结构·算法
程与留8 小时前
06_Qt 常用数据类型与容器:QString、QList、QVector、QMap 的性能与实现分析
数据结构·qt
林森lsjs8 小时前
队列 FIFO 原理 & 手撕两种队列实现(链表 + 循环数组)—数据结构陆
java·开发语言·数据结构·队列
H_oRIZoN_9 小时前
Linux入门DAY23(C语言树形结构)
linux·c语言·数据结构
孙克旭_9 小时前
数据结构基础:Java数组实现一次性队列
java·开发语言·数据结构·队列
间歇性努力持续性发呆的野生快乐选手9 小时前
stl容器使用和算法简介
数据结构·c++
时针滴滴答啊11 小时前
最大子数组和
算法·leetcode·职场和发展