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

这篇博客详细介绍了如何解决删除链表倒数第n个节点的问题。首先,题目描述了一个链表,要求删除其倒数第n个节点并返回新的链表头结点。接着,博主解释了问题的关键在于找到倒数第n个节点的前驱,并提供了两种判断条件。思路分析中提到采用快慢指针的方法,快指针先走n步,然后快慢指针同步移动,直到快指针到达链表尾部。最后,博主给出了具体的实现代码。
摘要由CSDN通过智能技术生成

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

一、题目描述

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

二、题目详解

给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。

子问题:找到倒数第n个结点的前驱
1.有两个引用,第一个引用指向首节点,然后走n步
2.第二个结点指向首节点,此时两结点之间隔了n-1个结点,保持这样的距离,共同向后移动
3.当第一个引用到达尾节点时,第二个引用离尾节点有n-1个结点,
4.此时第二个结点为倒数第n+1个结点,即倒数第n个结点的前驱
特殊情况
1.链表只有一个结点或者为空链表,直接返回空即可;
2.链表的长度刚好等于n,即删除首节点,第一个引用从头结点开始移动n步后,
第一个引用移动到了尾节点的下一个,即此时第一个引用为空,
出现第一个在移动n步后为空的情况时,说明要删除的是首节点,直接将首节点定为首节点的下一个即可

三、思路分析

快慢指针,快走n步,快慢一起走。

四、详解代码

package com.z
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值