当前位置: 首页 > 知识库问答 >
问题:

不相交整数区间的高效数据结构

苍德寿
2023-03-14

我有一组不相交的整数区间,想检查给定的整数是否位于其中一个区间。当然,这可以通过对数时间内的二进制搜索来实现。然而,绝大多数查询返回false,即任何时间间隔内只有很少的整数。为了加快应用程序的速度,我正在寻找一种概率的、恒定时间的算法(某种哈希函数),它可以告诉我给定的整数是绝对不是,还是可能在某个区间内。下面是预期算法的草图,其中使用存储在树中的间隔初始化magic\u data\u结构:

x = some_integer;
if(!magic_data_structure.find(x))
  return false; // definitely not in any interval
return tree.find(x); // binary search on tree

对文学有什么想法或提示吗?非常感谢您的帮助!

附言:有人知道对非重叠间隔的间隔树的改进吗?

共有1个答案

鲜于子琪
2023-03-14

这是一个幼稚的解决方案,但始终如此。

如果您不处理非常大量的数字,您可以使用哈希表,其中键是数字,值是指向它们所在集合的指针。但是当然,如果有很多数据,以这种方式索引它可能需要太长时间(和太多内存)。

看起来有各种不相交的集合数据结构和算法来存储/搜索它们,但我怀疑其中是否有常数时间。

 类似资料:
  • 试图让两个数据集相交,但我做不到:(。例如,在我下面的代码中,相交mySet和mySet2应该得到“1”,因为它们的集合中都有值“1”)。 集合1和集合2中都有“1”,但我的函数(交集)不返回它。我不确定如何将它们相交,我搜索了stackoverflow,发现相交_具有破坏性,但这对我不起作用,我还尝试了: 在javascript中数组交集的最简单代码 但当我尝试运行“过滤器”时,它会出错。

  • 比较函数是一个函数,它接受两个参数a和b,并返回一个描述其顺序的整数。如果a小于b,则结果为负整数。如果a大于b,则结果为某个正整数。否则,a和b相等,结果为零。 此函数通常用于参数化来自标准库的排序和搜索算法。 实现字符的比较功能相当容易;只需减去参数: 这是因为通常假设两个字符之间的差适合一个整数。(注意,此假设不适用于的系统) 这种技巧无法用于比较整数,因为两个整数之间的差通常不适合一个整数

  • 本文向大家介绍数据类型和数据结构之间的区别,包括了数据类型和数据结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,编程完全围绕数据展开。数据是实现所有业务逻辑的基础,而数据流则是构成应用程序或项目功能的数据。因此,组织和存储数据以使其最优化使用并使用良好的数据模型进行有效编程就变得非常重要。 通常,数据类型和数据结构似乎都与处理数据的性质和组织相同,但是其中两个描述了数据的类型和性

  • 我正在用Python实现一个Trie。到目前为止,我遇到了两种不同的方法来实现它: -存储字符 -存储单词结尾(true或false) -存储具有当前前缀的单词数 我们派生出这本词典: 哪一种是高效的、标准的数据结构,既能有效地存储内存,又能快速地进行字的大数据集上的遍历和其他trie操作?

  • 问题内容: 在Java中,我不了解集合与“数据结构”。在我看来,集合是指列表,集合,映射,队列,而“数据结构”是指用于实现集合的数据结构,例如数组,链接列表或树。例如,ArrayList和LinkedList都是集合,但它们的数据结构分别是数组和链接列表。我是正确的,还是我在混淆条款? 问题答案: 数据结构是如何在内存中的存储器内部表示数据。集合是如何访问它的方法。我强调“可以”这个词。 如果将数

  • 问题内容: 问题很简单: 我有两个清单 我需要得到这些的交集。有没有一种快速的方法来实现这一目标? 问题答案: 您可以使用方法: