【发布时间】:2022-06-11 05:08:24
【问题描述】:
这是查找两个跳过列表交集的算法:
我们可以看到,与一步一步相比,“跳过跳跃”在效率方面有很多好处。
但是在这里我很好奇,如果案例扩展到多个跳过列表,比如 100 个列表,该怎么办?目前我只想到分治法,将多个skip list按2分组,依次推导出交集,然后合并解,听上去既费时又低效。
用最少的时间确定多个跳过列表的交集的更好方法是什么?
【问题讨论】:
这是查找两个跳过列表交集的算法:
我们可以看到,与一步一步相比,“跳过跳跃”在效率方面有很多好处。
但是在这里我很好奇,如果案例扩展到多个跳过列表,比如 100 个列表,该怎么办?目前我只想到分治法,将多个skip list按2分组,依次推导出交集,然后合并解,听上去既费时又低效。
用最少的时间确定多个跳过列表的交集的更好方法是什么?
【问题讨论】:
初始化一个指向每个跳过列表开头的指针。假设您有“k”个。
在两个数据结构中维护每个指针的值:一个计数器(value->count 的哈希映射)和一个最小堆。
在每一步:
【讨论】: