我正在寻找一种方法来在跳过列表中找到给定的元素x,它是列表中的第k个元素(之前有k-1个元素)。 算法的预期时间应为O(log K)
我找到了已知的算法,它取O(log n),但这里是O(log K)。
提前感谢你
答案 0 :(得分:1)
您需要扩充跳过列表,以便每个节点都有一个“子树”中元素的计数(元素在其右下方位置,直到其级别中的下一个节点)。
很容易看出,您可以在不改变列表操作复杂性的情况下扩充此信息。
获得此元数据后,您需要进入一个级别,直到下一级别的节点已经远离右侧。此时,请降低一级。
顺便提一下,此问题称为动态订单统计信息到扩充。我从未在跳过列表中看过它,但是你可以找到关于如何用其他有序树进行连接的gazoogles,这几乎是一样的想法。