我得到5个列表,我需要所有的子集。
在数学术语中A n B n C n D.我需要这样做1.000个并发用户。
答案 0 :(得分:0)
处理查找多个集合的交集的最快方法是语言无关的:创建HashSet<int>
,使用最短列表中的数据对其进行初始化,然后依次调用剩余的IntersectWith
名单。您需要从最短列表开始,因为操作的复杂性为O(n+m)
,其中n
是HashSet<int>
中的项目数,m
是数字其他清单中的项目。由于IntersectWith
将被调用四次,并且设置初始HashSet<int>
的复杂性为O(n)
,因此整体复杂性将为
O( n + n+m1 + n+m2 + n+m3 + n+m4)
// ^ ^ ^ ^ ^
// | | | | |
// | Intersecting with lists 2..5
// |
// Setting up the initial HashSet<int>
由于总数为O(5*n+m1+m2+m3+m4)
,最好的方法是选择最短的列表进行初始设置。