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可以是任何东西.
编辑: 谢谢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)