项目场景:
提示:这里简述项目相关背景:
链表练习题
原因分析:提示:这里填写问题的分析:
1.双指针:(涉及链表的特殊位置双指针,删除结点,找到前驱节点)
需要找到倒数第 n个节点,因此可以使用两个指针 fast 和 slow 同时对链表进行遍历,并且fast 比 slow 超前 n个节点。当 fsat遍历到链表的末尾时,slow 就恰好处于倒数第 n个节点。
初始时fast 和 slow均指向头节点。首先使用 fast对链表进行遍历,遍历的次数为 n。此时,fast和slow 之间间隔了 n-1 个节点,即fast 比 slow超前了 n个节点
在这之后,同时使用 fast 和 slow 对链表进行遍历。当fast遍历到链表的末尾(即 fast为空指针)时,slow 恰好指向倒数第 n 个节点。
但是,如果能够得到的是倒数第 n 个节点的前驱节点而不是倒数第 n个节点的话,删除操作会更加方便。因此可以考虑在初始时将 slow指向哑节点,其余的操作步骤不变。当 fast遍历到链表的末尾时,slow的下一个节点就是需要删除的节点。
2.引入栈 在遍历链表的同时将所有节点依次入栈。根据栈「先进后出」的原则,我们弹出栈的第 n个节点就是需要删除的节点,并且目前栈顶的节点就是待删除节点的前驱节点。这样一来,删除操作就变得十分方便了
3.暴力破解 先找到链表的长度,然后遍历到第 L-n+1个节点时,它就是我们需要删除的节点
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?