Во-первых, бинарный поиск для отсортированных массивов.
Во-вторых, даже если вы сортируете массивы, сортировка массивов имеет сложность O (nlog n), которая больше, чем ниже, приближается к O (n).
Поскольку вам нужно найти дубликаты, Hashmap пригодится.
Hashmap put () имеет сложность O (1) и возвращает старое значение, связанное с ключом.
Приведенный ниже код имеет сложность O (n), где n - длина самого длинного массива.
Но это происходит за счет дополнительного места на карте.
int[] f = {17, 17, 22, 19};
int[] m = {21, 19, 24, 22, 20, 23, 18};
Map<Integer, Integer> unique = new HashMap<>();
for(int j = 0; j < f.length; j++) {
unique.put(f[j], 1);
}
for(int i = 0; i < m.length; i++) {
Integer temp = unique.put(m[i], 2);
if(temp != null && temp == 1) {
System.out.printf(m[i] + " ");
}
}