Algorithm 计算在给定范围内的间隔数
假设您有一个间隔列表,例如[(04),(13),(25),(26)]。此列表未排序。然后给你一个范围,比如[15]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((13)及(25)) 间隔列表保持不变,但我们最多收到100000个查询,每个查询包含一个范围。对于每个范围查询,我们必须返回适合内部的间隔数 在研究之后,我读到了关于。但是,您只能查询与任何给定范围重叠的区间,而我正在查找在该范围内的区间。这些查询需要对数时间Algorithm 计算在给定范围内的间隔数,algorithm,tree,language-agnostic,range,intervals,Algorithm,Tree,Language Agnostic,Range,Intervals,假设您有一个间隔列表,例如[(04),(13),(25),(26)]。此列表未排序。然后给你一个范围,比如[15]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((13)及(25)) 间隔列表保持不变,但我们最多收到100000个查询,每个查询包含一个范围。对于每个范围查询,我们必须返回适合内部的间隔数 在研究之后,我读到了关于。但是,您只能查询与任何给定范围重叠的区间,而我正在查找在该范围内的区间。这些查询需要对数时间 有没有办法在类似的时间复杂度下解决这个问题,可能是使用区间树的
有没有办法在类似的时间复杂度下解决这个问题,可能是使用区间树的变化?我不是在寻找线性解决方案(因为暴力意味着扫描所有间隔)。如果你要添加间隔,你可以在树的节点中记住id,你只需要记住交叉点a和b的段,所以,你们只需要让段树得到id的向量,穿过a和b。从另一棵树上,你会问a-b段的结尾数。之后,您将只删除发生过一次的id。它应该更快 对于相同的时间间隔列表,您是否收到多个查询?是的,最多10^5。如果您同时收到所有查询,则很容易。否则就很难了。你在问题中漏掉了很多细节,所以……是的,你同时得到了查询——我会将其添加到我的帖子中。如果你需要任何其他细节,我会添加它:)