gpt4 book ai didi

performance - 用于存储允许高效比较操作的值范围的数据结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:31 24 4
gpt4 key购买 nike

我正在寻找一种允许存储非重叠整数范围的数据结构并比较某个范围是否存在[被]数据结构[覆盖]。

例如,在我存储 (0,9),(10,19),(30,29) 之后,稍后我想检查范围 (1,11) 是否被覆盖,在这种情况下算法给出"is",而对于范围 (15,25),算法给出“否”,因为给定范围未涵盖。

非常感谢。

最佳答案

由于您处理的是非重叠整数范围,我认为一个简单的 BST 就可以完成这项工作(像 AVL 或 RB 树一样平衡,以防您需要严格的 O(logN) 性能)

对于区间 [a-b]构建以“a​​”为键的树。节点结构类似于:

struct node{
int left;
int right;
struct node*left;
struct node*right;
};

为了搜索:

bool SearchOverlap(node* root, interval I){
if(!root)
return false;
if(I.right < root->left)
SearchOverlap(root->left, I);
else if(I.left > root->right)
SearchOverlap(root->right, I);
else if(I.left > root->left && I.right < root->right)
return true;
else if(I.left < root->left && I.right < root->right)
return SearchOverlap(root->left, new Interval(I.left, root->left));
else if(I.left > root->left && I.right > root->right)
return SearchOverlap(root->right, new Interval(root->right, I.right));
}

关于performance - 用于存储允许高效比较操作的值范围的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13009179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com