确定一个集合与另外两个集合的交集是否为空

koe*_*oen 2 algorithm specifications set-theory set

对于任何三个给定的集合A,B和C:是否有一种方法可以(以编程方式)确定是否存在A的元素,它是B和C的连接(编辑:交集)的一部分?

例如:
A:所有大于3
B的数字:所有数字小于7
C:所有数字等于5

在这种情况下,集合A中的元素是数字5,适合.我将其作为规范实现,因此这个数值范围只是一个例子.A,B,C可以是任何东西.

Pra*_*are 5

编辑: 谢谢Niki!

如果,这会很有帮助B.Count <= C.Count <= A.Count.

D = GetCommonElements(B,C);
if( D.Count>0 && GetCommonElements(D,A).Count >0)
{
    // what you want IS NOT EMPTY
}
else
{
    // what you want IS EMPTY
}

SET GetCommonElements(X,Y)
{
    common = {}
    for x in X:
       if Y.Contains(x):
         common.Add(x);
    return common;
}
Run Code Online (Sandbox Code Playgroud)

看看高效集合交叉算法.


我们可以使用集合的分配规律

替代文字

if(HasCommonElements(A,B) || HasCommonElements(A,C))
{
    // what you want IS NOT EMPTY
}
else
{
    // what you want IS EMPTY
}
Run Code Online (Sandbox Code Playgroud)

bool HasCommonElements(X,Y)
{
    // if at least one common element is found return true(immediately)

    return false
}
Run Code Online (Sandbox Code Playgroud)