我在这篇文章中探索了另一种链表算法。这有点难。
创建一个函数来删除链表末尾的第一个函数。 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 详细内容,更多请关注其他相关文章!