zvvq技术分享网

删除链表末尾的第 N 个(删除链表尾结点)

作者:zvvq博客网
导读在这篇文章中,我探索了另一种链表算法。这个有点难。。 创建一个函数来删除链表末尾的第 n 个节点。 这来自于leetcode问题。与 leetcode 问题一样,“n”是从 1 开始的,可以从 1 到列

内容来自zvvq,别采集哟

我在这篇文章中探索了另一种链表算法。这有点难。 本文来自zvvq

创建一个函数来删除链表末尾的第一个函数。 n 个节点。

内容来自zvvq

这个问题来自于leetcode。和 leetcode 同样的问题,“n”是从 1 一开始,可以从 1 到达列表的长度。 内容来自zvvq,别采集哟

func(llLinkedList[T])RemoveNthFromEnd(nint)Node[T]{ 内容来自samhan666

if n ==0{ 内容来自samhan

returnnil

copyright zvvq

} zvvq.cn

fast:=ll.Head//thismovestotheend

内容来自samhan

slow:=ll.Head//thisshouldbeonebehindthenthfromend

本文来自zvvq

forcount:=0;count 内容来自samhan666

重点是使用双指针。首先,我们将快指针和慢指针初始化为指向列表头部。

copyright zvvq

下一步,我们将快指针向前移动n个节点。通过这种方式,慢指针现在在快指针后面。n“地方。如今,我们可以通过锁步移动两个指针,直到 fast 结束。 copyright zvvq

接着我们可以删除倒数第一 n 一个节点并返回它。

内容来自samhan

是否有更好的方法?请在评论中告诉我。 本文来自zvvq

谢谢! 内容来自samhan666

本文及本系列所有文章的代码可在此找到。

内容来自samhan666

上述就是删除链表末尾的第一个。 N 详细内容,更多请关注其他相关文章! zvvq