【发布时间】:2019-08-28 12:56:39
【问题描述】:
当您需要找到单链接列表的最后一个元素kth 时,通常的天真的方法是执行两次遍历。第一个查找列表的长度,第二个迭代直到(length-k)th 元素。
而优化版本利用了两个指针:
-
p1指的是列表的头部 -
p2是kth 前面的元素p1
这允许我们在p2 到达列表末尾时返回p1 的元素。
我不明白为什么第二种方法比第一种方法更快,因为在这两种情况下,我们都有一个指针在整个列表中迭代,另一个直到 (length-k)th 元素。
是缓存优化的原因吗?
谢谢。
【问题讨论】:
-
当长度 = k 时,第一种方法迭代 2*k 次,但第二种方法只迭代 k 次
-
两种算法的复杂度相同。哪一个在实践中更快取决于实际的实现。
-
这将有助于为这两种方法编写代码。那么差异会更加明显。
标签: algorithm linked-list singly-linked-list