当前位置: 首页 > 知识库问答 >
问题:

验证一个数组是否是另一个数组的子集

段阳夏
2023-03-14

这是一个流行的问题,但我找不到一个满足我案例的答案。

我有布尔数组,其中我试着看一个数组是不是另一个数组的子集。

示例:

const int size = 10;
bool arr1[size];
bool arr2[size];
bool arr3[size];

assume the arrays have been initialized to false except for the following:

arr1 4,5,6 = true
arr2 0 = true
arr3 4,5 = true

在本例中,ARR2不是两者的子集,但ARR3ARR1的子集。

我尝试了一些从布尔的真值创建整数数组的麻烦尝试,但我仍然不确定如何验证它们是按顺序排列的(即一个子集)。

int size = 10;
for (int i = 0; i<size; i++)
{
    for (int j = 0; j<size; j++)
    {
       if(arr2[i] == arr1[j])
          break;
    }
    if (j == size)
       return false;
}
return true;
}

这个也没用。

目标是确定一个数组是否包含另一个数组的所有元素。在这种情况下,ARR3将索引4和5作为true,这在ARR1中也是true

但是如果我将arr2与超集arr1进行比较,它将返回false,因为arr1[0]不是true。

共有1个答案

亢建白
2023-03-14

下面的函数用于检查数组A是否具有Btrue中的所有索引true(这里的AB的大小相同)。

bool checkArrays(bool a[], bool b[], int n) {
    for(int i=0; i<n; i++) {
        if(b[i] && b[i] != a[i]) // compare only if b[i] is true
            return false;
    }
    return true;
}
 类似资料:
  • 问题内容: 如何有效地检查整数数组中的所有元素是否是Java中另一个数组的所有元素的子集?例如,[33 11 23]是[11 23 33 42]的子集。提前致谢。 问题答案: 从超集数组中取出一个。检查子集中数组的每个元素是否包含在中。这是非常快速的操作。

  • 问题内容: 在SO上已经问过类似的问题,但是它们有更具体的约束,其答案不适用于我的问题。 一般来说,确定任意numpy数组是否是另一个数组的子集的最有效方法是什么?更具体地说,我有大约20000x3的数组,我需要知道完全包含在集合中的1x3元素的索引。更普遍地讲,是否有更Python化的方式编写以下代码: 对于我的用例,我可以安全地假设len(master)<<20000。(因此,可以安全地假设m

  • 我有两个数据框,都包含英文和中文单词字符串,我想知道其中一个是另一个的子集:

  • 问题内容: 我需要验证列表是否是另一个列表的子集-我想要的只是布尔返回值。 在相交后在较小列表上测试相等性是最快的方法吗?考虑到需要比较的数据集数量,性能至关重要。 根据讨论添加更多事实: 在许多测试中,两个列表中的两个列表是否相同?它作为静态查找表之一来执行。 需要列表吗?事实并非如此-静态查找表可以是执行效果最好的任何内容。动态命令是一种dict,我们从中提取密钥以执行静态查找。 在这种情况下

  • 问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma

  • 假设我有两个数组,和,其中是的子集: 我想返回如下数组: 如果只是一个数字,那就足够简单了(),但我尝试了y中的等效