gpt4 book ai didi

algorithm - 查找单链表的倒数第 k 个元素 : answer explanation

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:50 25 4
gpt4 key购买 nike

当您需要查找单向链接列表的第 k 个最后一个元素时,通常的朴素方法是执行两次遍历。第一个找到列表的长度,第二个迭代直到 (length-k)th 元素。

而优化版本利用了两个指针:

  • p1 指向链表的头部
  • p2p1
  • 之前的 k 个元素

这允许我们在 p2 到达列表末尾时返回 p1 的元素。我不明白为什么第二种方法比第一种方法更快,因为在这两种情况下我们都有一个指针遍历整个列表,另一个指针遍历整个列表,另一个直到 (length-k)th 元素。

是缓存优化的原因吗?

谢谢。

最佳答案

如果您将 p2 恰好保留在 p1 之后的 k 个元素,那么它并没有多大帮助,因为您必须执行相同的操作一起遍历的次数。

不过,您可以通过使用更多指针来优化该过程。

当您浏览列表时,假设您记得指针在每个 (k/m)th 位置,有一些 m。您只需要记住这些指针的最后一个 m+1。然后,当你到达列表的末尾时,不要从头开始迭代,而是从你记得的最早的指针开始。它会在 kk + (k/m) 元素之间,所以你最多只需要将它向前移动 k/m 个职位。

关于algorithm - 查找单链表的倒数第 k 个元素 : answer explanation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com