【发布时间】:2013-07-05 15:17:57
【问题描述】:
我正在考虑在算法上找到单链接列表中的倒数第三个元素,我自己想出了一个(空间效率低下)
使用具有 O(n) 时间复杂度 [大量空间复杂度] 的循环将链接列表放入 ArrayList
然后找到 Arraylist 的大小并在 (size-2) 索引位置检索元素[所需元素]
如果我的算法有意义,请指导我
仅供参考
我搜索的其他内容是:
放置两个指针,将第一个指针放在第一个元素上,将第二个指针放在第三个元素上,并平行移动它们
当第二个指针到达LinkList的末尾时,检索第一个指针指向的节点[所需节点]
【问题讨论】:
-
您可以使用单个指针。遍历到
ptr.next().next().next() == null; -
@GriffeyDog 由于“遍历”是一系列
.next()调用,因此您正在执行三个遍历,而只有一个是必要的。但是,由于缓存,您的方法可能比三个单独的遍历更快。 -
@maybeWeCouldStealAVan 这取决于 OP 的目标是什么。我只是提供一个简单编码算法,它保持 O(n) 时间复杂度并且不增加空间要求。我认为OP的第二个选项会很好。
-
@GriffeyDog 够公平 :-)
标签: java algorithm linked-list