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

Java:如何检查两个数组是否包含公共元素?[关闭]

冯庆
2023-03-14

有没有什么简单的方法可以检查两个数组是否包含任何公共元素?这合适吗?数组包含类型char。

Arrays.asList(encryptU).contains(Ualpha[randNum]));

提前道谢!

共有1个答案

徐涵亮
2023-03-14

如果数组很小,那么具有嵌套for循环的解决方案(例如@ScaryRawr's)将会执行得最好。

如果数组足够大,那么上述解决方案的O(n^2)复杂度就会有问题。解决方案是使用哈希集;例如。

HashSet<Character> tmp = new HashSet<Character>();
for (char ch : arr1) {
    tmp.add(ch);
}
for (char ch : arr2) {
    if (tmp.contains(ch)) {
        // elements in common!!
    }
}

这是时间上的O(N),尽管比例常数相当大。(我认为您需要数组大小的乘积为20或30,这样才能比嵌套循环解决方案更快...但这只是猜测。)此外,这需要O(N)临时空间。

如果字符的范围有限,则可以使用bitset而不是hashset。这在时间和空间上也大致是O(N),尽管字符的范围也是复杂度的一个因素,所以称它为O(N)是一种过度简化。

但我们对此很可能是“想多了”。最好的建议可能是实现一些简单的东西,如果怀疑性能是一个真正的关注点,那么就对其进行分析,以避免不必要的优化浪费您的时间。

 类似资料:
  • 我有这个ArrayList- ,一个整数被添加到移动[1]。然后将该数组添加到ArrayList中,然后重复该过程,这样我就有了一个“移动”列表。 我的问题是,我不确定如何在ArrayList(“树”)中找到仅在元素中包含特定值的数组(“移动”)——因为元素每次都是唯一的。 然后,我想制作一个所有匹配项的数组/列表。例如,一个数组,它包含与3的值相匹配的所有移动值。因此,我会留下一个数组/2D数组

  • 问题内容: 在Swift中,如何检查数组中是否存在元素?Xcode没有针对,,或的任何建议,并且快速搜索本书不会发现任何结果。知道如何检查吗?我知道有一种方法可以返回索引号,但是有没有一种方法可以返回像ruby一样的布尔值? 我需要的示例: 问题答案: 斯威夫特2、3、4、5: 是(用于元素序列的) 协议扩展方法 ,而不是早期版本中的全局方法。 备注: 该方法要求序列元素采用协议。 如果序列元素是

  • 问题内容: 示例:我正在检查是否存在像这样的数组元素: 但是,我不断收到此错误: 当然,我第一次想要实例时,$ instances不会知道密钥。我想我对可用实例的检查是错误的? 问题答案: 您可以使用语言构造或函数。 应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false 。 例如,考虑以下数组: 和这三个测试,依赖于: 第一个会得到您( 该元素存在,并且不为n

  • 在Swift中,如何检查数组中是否存在元素?Xcode没有关于、或的任何建议,并且在这本书中快速搜索没有任何结果。知道怎么查这个吗?我知道有一个方法返回索引号,但是有没有一个方法像Ruby的那样返回一个布尔值? 我需要的示例:

  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下: