【问题标题】:How to augment a skip list such that we can extract max value of a specific segment of the skiplist efficiently? [Skiplist not sorted by value]如何增加跳过列表,以便我们可以有效地提取跳过列表的特定段的最大值? [跳过列表未按值排序]
【发布时间】:2019-11-27 22:29:02
【问题描述】:

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

我有一个包含元素的跳过列表: element = (date,value)

日期是跳过列表的键,因此,跳过列表按日期排序。 我怎样才能增加跳过列表,使功能 Max(d1,d2) -> returns largest value between dates d1 and d2 是最有效的。 这些值是整数。

【问题讨论】:

    标签: data-structures skip-lists


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2016-11-23
      • 2015-07-04
      • 2018-04-19
      相关资源
      最近更新 更多