对整数流进行范围查询的算法

时间:2018-06-18 16:41:01

标签: algorithm range-query

我正在为我的程序获得正整数流。我收到它们时要存储它们,并且能够回答介于两者之间的范围查询。

我想到的一个简单的解决方案是将整数存储在散列表中,其中键是整数的字符表示形式(键必须是哈希表中的字符串)。 然后,每当范围查询[a,b]出现时,我可以简单地从a循环到b,检查密钥是否存在并检索该值是否存在。但是,我不确定这是不是一个好方法。

此问题还有哪些其他替代解决方案?

1 个答案:

答案 0 :(得分:0)

如果您从目前为止读取的流中维护了整数的有序列表,则可以通过查找user.roles.map(r = r.permissionGroups).flatten().reduce(pg => pg.permissions).flatten(); (使用二进制搜索)并从该点迭代直到您通过{{1}来完成范围查询无论填充范围多么稀疏,所以查询所花费的时间将与结果的实际大小成比例。