【发布时间】:2019-11-27 22:29:02
【问题描述】:
我有一个问题正在努力解决。
我有一个包含元素的跳过列表:
element = (date,value)
日期是跳过列表的键,因此,跳过列表按日期排序。
我怎样才能增加跳过列表,使功能
Max(d1,d2) -> returns largest value between dates d1 and d2
是最有效的。
这些值是整数。
【问题讨论】:
标签: data-structures skip-lists
我有一个问题正在努力解决。
我有一个包含元素的跳过列表:
element = (date,value)
日期是跳过列表的键,因此,跳过列表按日期排序。
我怎样才能增加跳过列表,使功能
Max(d1,d2) -> returns largest value between dates d1 and d2
是最有效的。
这些值是整数。
【问题讨论】:
标签: data-structures skip-lists
最有效的方法是从d1 到d2 迭代每个项目并选择最大的项目。因为跳过列表是按日期排序的,所以你不能假设任何关于值的顺序:它们也可能是随机排序的。所以你必须看看每一个。
所以找到d1是O(log n)(平均而言:毕竟这是一个跳过列表),然后找到最大元素是O(range),其中range是d1 和 d2 之间的项目,包括在内。
如何实现这一点是向跳过列表中添加一个函数,允许您从任意元素开始迭代列表。您几乎可以肯定已经有一个函数可以按顺序遍历整个列表,因此您所要做的就是创建一个可以遍历一系列键(即从开始键到结束键)的函数。
【讨论】: