![](/img/trans.png)
[英]Given two arrays, write a function to compute their intersection
[英]Given two random integer arrays, print their intersection. That is, print all the elements that are present in both the given arrays
import java.util.Arrays;
public class temp_2 {
public static void intersection(int[] arr1, int[] arr2){
Arrays.sort(arr1);
Arrays.sort(arr2);
int i=0;
int j=0;
while((i != arr1.length) || (j != arr2.length)){
if(arr1[i]==arr2[j]){
System.out.println(arr1[i]);
i++;
j++;
}
else{
if(arr1[i]<arr2[j])
i++;
else if(arr1[i]>arr2[j])
j++;
}
}
}
public static void main(String args[]){
int[] a={1,2,3,3};
int[] b={2,2,3,4,5};
intersection(a,b);
}
}
// 它打印正确的答案,但随后给出了 java.lang.ArrayIndexOutOfBoundsException 的错误。 我哪里出错了? 我首先对两个数组进行排序,然后使用此方法打印是否相等或增加索引,除非它的结尾是任何一个数组。
你应该改变你的陈述:
(i != arr1.length) || (j != arr2.length)
到:
(i < arr1.length) && (j < arr2.length)
考虑使用 List 接口中的 retainAll 方法:
retainAll(Collection<?> c)
仅保留此列表中包含在指定集合中的元素(可选操作)。
公共类 CommonElementsInArray {
public static void main(String a[]){
int[] arr1 = {1,2,3,4,5};
int[] arr2 = {1,2,3,4,5,6,7,7,9};
for(int i=0;i<arr1.length;i++){
for(int j=0;j<arr2.length;j++){
if(arr1[i]==arr2[j]){
System.out.println(arr1[i]);
}
}
}
}
}
输出:1,2,3,4,5
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.