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

计算在给定范围内的间隔数

谷梁楷
2023-03-14

假设您有一个间隔列表,例如[(0 4),(1 3),(2 5),(2 6)]。此列表未排序。然后给您一个范围,如[1 5]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((1 3)和(2 5))

间隔列表保持不变,但我们最多得到100000个查询,每个查询由一个范围组成。对于每个范围查询,我们必须返回适合其中的间隔数。

在研究之后,我读到了间隔树。但是,您只能查询与任何给定范围重叠的间隔,而我正在查找该范围内的间隔。这些查询需要对数时间。

是否有任何方法可以在类似的时间复杂度下解决此问题,可能是使用区间树的变化?我不是在寻找线性解决方案(因为暴力意味着扫描所有间隔)。

共有1个答案

李光华
2023-03-14

假设这些线段没有那么长,如果你要添加一个间隔,你可以在树的节点中记住id,你只需要记住穿过点a和b的线段,所以你只需要让线段树获得id穿过a和b的向量。从另一棵树,您将询问a-b段中的结尾数。之后,您只需删除发生过一次的id。它应该更快。

 类似资料:
  • 本文向大家介绍在C ++中计算给定范围内的阶乘数,包括了在C ++中计算给定范围内的阶乘数的使用技巧和注意事项,需要的朋友参考一下 给定范围是从变量保存的整数值开始,比如说从开始直到变量结束,而任务是计算给定范围内可用的阶乘数的总数。 什么是阶乘数 数字的阶乘是通过将数字中的数字相乘,同时将数字的值减1来计算的。它由符号“!”表示 即0!,1!,2!,3!,5!,....等 0阶乘!和1!始终为1

  • 我需要知道不同事件发生的频率。例如,在过去 15 分钟内发生了多少个 HTTP 请求。由于可能有大量的事件(数百万个),因此必须使用有限的内存量。 Java中有什么util类可以做到这一点吗? 如何在Java中实现这个自我? 理论用法代码可以如下所示: 编辑:它必须是一个实时值,可以在一分钟内更改数千次,并且将在一分钟内查询数千次。基于数据库或文件的解决方案是不可能的。

  • 本文向大家介绍计算C ++中给定范围内的最小元素数,包括了计算C ++中给定范围内的最小元素数的使用技巧和注意事项,需要的朋友参考一下 我们得到了一个大小为N的整数数组。变量L和R定义了一个介于1和N之间的范围。目标是找到位于范围L和R中的最小元素数,使得L> = 1且R <= N. 我们将遍历位于范围L和R中的元素并找到最小的元素,以实现此目的。 同样,遍历范围L和R的元素,如果任何元素等于在步

  • 我正在尝试编写一个Heap排序方法,它只在传入方法的给定范围内执行排序。传入的范围是低和高,这些值对应于堆中的值,而不是堆的索引。例如,输入数组可能是:28 10 49 20 59 61 17,如果low=49,high=61,Heap排序后的结果数组将看起来像这样:28 10 20 49 59 61 17。范围之外的值保持不变。我已经有了一个工作的Heap排序方法,但我的问题是如何修改这个方法以

  • 我参加了一个编程比赛,我无法解决问题,问题是: 给定一个n个整数的数组A,我需要计算给定范围内求逆的次数。提供一个整数m,它表示范围的数量,然后是m行,在每一行中给出两个整数li和ri。 我们必须只计算指定范围内的反转,即从li到ri(包括0)的反转(基于0的索引)。 如果 A[i] 两个元素 A[i] 和 A[j] 添加到反演中 反转是: 输入: 输出: 约束: 我知道在整个数组上计算O(nlo

  • 问题内容: 我知道范围有3种类型:范围,步幅和间隔。 快速间隔是多少?以及它们使用的一个例子是什么? http://zh.wikipedia.org/wiki/间隔(数学) 编辑:这就是beta 5 xcode 6发行说明所说的: •可比较值的间隔,可以有效地检查是否包含。间隔用于switch语句中的模式匹配,并由〜=运算符使用。 问题答案: 从Swift 3(使用Xcode 8)开始,类型不再存