我正在尝试在Java中找到一种有效的方法来检查两个数组是否至少有一个元素共同元素。所以这意味着[1,2,2,3]和[2,3,5,6]会给出False,而[1,2,2,3]与[5,2,1,5]相比会给出True 。目前我循环遍历元素,并在其中一个元素相等时突破循环。有更有效的方法吗?
答案 0 :(得分:1)
不要认为你可以做得比O( min(array1.length, array2.length) )
您可以执行微优化,例如循环展开(https://en.wikipedia.org/wiki/Loop_unrolling),尽管您可能需要在沿着此路径前仔细考虑。
答案 1 :(得分:0)
您可以逐个元素地比较两个数组,并在找到匹配的true时返回,否则返回false。
public class ArrayCheck {
public static void main(String[] arg){
int[] a = {1, 2, 2, 3};
int[] b = {2, 3 ,5 ,6};
int[] c = {5, 2, 1, 5};
System.out.println("Result " + elementWiseCompare(a,b));
System.out.println("Result " + elementWiseCompare(a,c));
}
public static boolean elementWiseCompare(int[] a, int [] b){
for(int i = 0; i < a.length && i < b.length; i++){
if (a[i] == b[i]){
return true;
}
}
return false;
}
}
输出:
结果为false 结果为真