ZVVQ代理分享网

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

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

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

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

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

func(llLinkedList[T])RemoveNthFromEnd(nint)Node[T]{

if n ==0{

returnnil

}

fast:=ll.Head//thismovestotheend

slow:=ll.Head//thisshouldbeonebehindthenthfromend

forcount:=0;count

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

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

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

是否有更好的方法?请在评论中告诉我。

谢谢!

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

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