如何扩充跳过列表,以便我们可以有效地提取跳过列表特定段的最大值?[船长不按值排序]



我有一个问题,我正在努力解决。

我有一个带有元素的船长: element = (date,value)

日期是船长的关键,因此,船长按日期排序。 如何增强船长,使函数 Max(d1,d2) -> returns largest value between dates d1 and d2 是最有效的。 这些值是整数。

最有效的方法是从d1迭代每个项目到d2并选择最大项目。由于跳过列表是按日期排序的,因此您不能对值的顺序进行任何假设:它们也可以随机排序。所以你必须看看每一个。

所以找到d1是 O(log n((平均而言:毕竟这是一个跳过列表(,然后是 O(range( 找到最大元素,其中ranged1d2之间的项目数,包括。

如何实现这一点是向跳过列表添加一个函数,该函数允许您从任意元素开始迭代列表。几乎可以肯定,您已经有一个函数可以按顺序遍历整个列表,因此您所要做的就是创建一个将迭代一系列键(即从开始键到结束键(的函数。

最新更新