有没有什么简单的方法可以检查两个数组是否包含任何公共元素?这合适吗?数组包含类型char。
Arrays.asList(encryptU).contains(Ualpha[randNum]));
提前道谢!
如果数组很小,那么具有嵌套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)
是一种过度简化。
但我们对此很可能是“想多了”。最好的建议可能是实现一些简单的东西,如果怀疑性能是一个真正的关注点,那么就对其进行分析,以避免不必要的优化浪费您的时间。
我如何在JavaScript中做到这一点?
我有这个ArrayList- ,一个整数被添加到移动[1]。然后将该数组添加到ArrayList中,然后重复该过程,这样我就有了一个“移动”列表。 我的问题是,我不确定如何在ArrayList(“树”)中找到仅在元素中包含特定值的数组(“移动”)——因为元素每次都是唯一的。 然后,我想制作一个所有匹配项的数组/列表。例如,一个数组,它包含与3的值相匹配的所有移动值。因此,我会留下一个数组/2D数组
问题内容: 在Swift中,如何检查数组中是否存在元素?Xcode没有针对,,或的任何建议,并且快速搜索本书不会发现任何结果。知道如何检查吗?我知道有一种方法可以返回索引号,但是有没有一种方法可以返回像ruby一样的布尔值? 我需要的示例: 问题答案: 斯威夫特2、3、4、5: 是(用于元素序列的) 协议扩展方法 ,而不是早期版本中的全局方法。 备注: 该方法要求序列元素采用协议。 如果序列元素是
问题内容: 示例:我正在检查是否存在像这样的数组元素: 但是,我不断收到此错误: 当然,我第一次想要实例时,$ instances不会知道密钥。我想我对可用实例的检查是错误的? 问题答案: 您可以使用语言构造或函数。 应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false 。 例如,考虑以下数组: 和这三个测试,依赖于: 第一个会得到您( 该元素存在,并且不为n
在Swift中,如何检查数组中是否存在元素?Xcode没有关于、或的任何建议,并且在这本书中快速搜索没有任何结果。知道怎么查这个吗?我知道有一个方法返回索引号,但是有没有一个方法像Ruby的那样返回一个布尔值? 我需要的示例:
问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下: