Data structures 以下用例的最佳数据结构
我的用例是在多个级别上应用过滤器。将其视为一个只有两个级别的树结构(目前,我的用例只包含两个级别,但预期的解决方案应该具有两个以上级别的可能性)Data structures 以下用例的最佳数据结构,data-structures,Data Structures,我的用例是在多个级别上应用过滤器。将其视为一个只有两个级别的树结构(目前,我的用例只包含两个级别,但预期的解决方案应该具有两个以上级别的可能性) 用户可以接受或拒绝级别1或级别2的规则 如果用户接受或拒绝级别1上的规则,则该级别及其所有子级应继承相同的属性,这意味着它们也将被接受或拒绝 用户可以添加异常。例如,如上所述,如果他在级别1拒绝了一条规则,那么其子规则也将被拒绝。但是,用户可以选择专门将子项标记为已接受。这些被称为例外 我想要一个数据结构,它应该能够有效地存储这些信息,并且给定数千个单
US--------------------------UK ( Level 1 )
/ \ / \
/ \ / \
/ \ / \
/ \ / \
florida texas london Manchester
/\ |\ /\ /\
/ \ | \ / \ / \
/ \ | \ / \ / \
Male Female M F M F M F
用户说删除我们所有的人。
因此,在遍历人员列表时,我将删除country==US的所有人员
用户说把我们所有的人都从名单上删除,但是德克萨斯州的人不应该被删除
用户说除了德克萨斯州的男性之外,我们所有人都应该被包括在内
那么,最好的数据结构是什么来存储这些类型的规则,并将其应用到列表中,以根据用户的偏好获取用户
再加上它,可以有数千个国家和数千个城市
如果你能建议两个级别的数据结构,那就太好了。我建议使用一个包含多个索引的简单列表。也就是说,你有一份所有人的名单,不管他们在哪个国家 然后,决定要用于过滤器的属性。你提到了国家、州、城市和性别。所以你有四个散列映射
- 获取一组居住在美国的人
- 与生活在得克萨斯州的一群人相交
- 与男性群体相交
k
选择标准,则最坏情况下的运行时间与k*n
成比例,其中n
是列表中的总人数。平均运行时复杂性应该更好。如果您根据散列集中的条目数对交叉点进行排序,则可以快速缩短运行时间。例如,在上面的例子中,您首先要选择居住在德克萨斯州的人数,这将大大减少您的搜索空间。然后是美国,最后是性别
索引的空间复杂度为O(n*k)。也就是说,每个人的每个哈希映射中都会有一个条目。虽然每个级别的大小看起来很大,但是否有多个级别?还有,为什么水平特别重要?如果用户接受或拒绝一条规则,它会自动移动到顶层(可能有一个“接受”的顶层和一个“拒绝”的顶层)吗?一个包含六条左右规则的具体示例确实有助于理解您试图完成的任务。更新了问题
US--------------------------UK ( Level 1 )
/ \ / \
/ \ / \
/ \ / \
/ \ / \
florida texas london Manchester
/\ |\ /\ /\
/ \ | \ / \ / \
/ \ | \ / \ / \
Male Female M F M F M F