Вы должны использовать Set
s, чтобы делать подобные вещи, но так как это упражнение, я предоставил решение с некоторыми комментариями по пути в коде.
В основном вам следуетразбить проблему на кусочки, каждый из которых является собственным методом.Таким образом вам будет проще разобраться в этом.
arrayIntersect(int[], int[])
Задача этого метода - создать массив из двух массивов.Полученный массив должен иметь уникальные элементы, которые присутствуют в обоих массивах.
Вы можете сделать n.1 с помощью вспомогательного метода (упомянутого ниже).
inArray(int, int[])
Этот метод возвращает значение true, если массив содержит данный элемент, в противном случае - значение false.
Пример
public static void main (String[] args) {
int[] a1 = {3, 8, 5, 6, 5, 8, 9, 2};
int[] a2 = {5, 15, 4, 6, 7, 3, 9, 11, 9, 3, 12, 13, 14, 9, 5, 3, 13};
int[] a3 = arrayIntersect(a1, a2);
for (int a : a3) {
System.out.println(a);
}
}
private static int[] arrayIntersect(int[] a1, int[] a2) {
int[] intersect = new int[Math.min(a1.length, a2.length)];
int curIndex = 0;
for (int x : a1) {
if (inArray(x, a2) && !inArray(x, intersect)) {
intersect[curIndex] = x;
curIndex++;
}
}
// resize intersect array to not include unused indexes
int[] tmp = intersect;
intersect = new int[curIndex];
for (int i = 0; i < intersect.length; i++) {
intersect[i] = tmp[i];
}
return intersect;
}
private static boolean inArray(int element, int[] array) {
boolean result = false;
for (int a : array) {
if (element == a) {
result = true;
break;
}
}
return result;
}