我试图在 Java 中找到一种有效的方法来检查两个数组是否至少有一个共同元素。所以这意味着 [1, 2, 2, 3] 和 [2, 3 ,5 ,6] 会给出 False,而 [1, 2, 2, 3] 与 [5, 2, 1, 5] 相比会给出 True . 目前我循环遍历元素,一旦元素之一相等就退出循环。有没有更有效的方法?
问问题
328 次
2 回答
1
不要以为你可以做得更好O( min(array1.length, array2.length) )
您可以进行一些微优化,例如循环展开 ( https://en.wikipedia.org/wiki/Loop_unrolling ),尽管您可能需要在走这条路之前仔细考虑。
于 2018-01-26T12:24:48.353 回答
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;
}
}
输出:
结果假 结果真
于 2018-01-26T12:11:50.837 回答