例如,以下问题表明:
编写一个方法,该方法将两个整数数组作为参数并打印所有公共元素。
我的尝试:
public static void commonElements(int[] A, int[] B)
{
for(int i = 0; i < A.length; i++)
for(int j = 0; j < B.length; j++)
if(A[i] == B[j])
System.out.print(A[i] + " ");
}
现在,问题是这个代码只有在每个数组中的元素只出现一次时才有效。但是,例如,如果在阵列A中有两个4,而在阵列B中有四个4,输出将是8个4,这是错误的!
那么,如何检查数组中的某个元素是否已经出现,以便代码不会考虑它。
答案 0 :(得分:0)
public static void commonElements(int[]A, int []B){
int count = 0;
for(int i = 0; i < A.length; i++)
for(int j = 0; j < B.length; j++)
if(A[i] == B[j]){
count++;
break;
}
System.out.println(count);
}
试一试。通过添加break来强制它离开循环。
答案 1 :(得分:0)
您可以存储在集合中找到的内容。集合不允许重复。
public static void commonElements(int[] a, int[] b)
{
Set<Integer> duplicates = new LinkedHashSet<Integer> duplicates;
for(int i = 0; i < a.length; i++){
for(int j = 0; j < b.length; j++){
if(a[i] == b[j]){
duplicates.add(a[i]);
}
}
}
System.out.println(String.join(" ", duplicates));
}
注意:按照惯例,Java中的变量名称应为小写。