Мне было интересно, что могло бы стать лучшим решением, которое могло бы создать меньшую сложность, чем O(n^2)
при печати уникальных предметов из двух массивов. Есть идеи?Найти уникальные предметы из двух массивов
int[] a = {1,2,4,5,8};
int[] b = {3,2,5,7,8};
ArrayList unMatch = new ArrayList() ;
for(int i=0; i<a.length; i++){
boolean contains = false;
innerloop:
for(int k =0; k<b.length; k++){
if(a[i]==b[k]){
contains = true;
break innerloop;
}
}
if(!contains){
unMatch.add(a[i]);
}
}
for(int i=0; i<b.length; i++){
boolean contains = false;
innerloop:
for(int k =0; k<a.length; k++){
if(b[i]==a[k]){
contains = true;
break innerloop;
}
}
if(!contains){
unMatch.add(b[i]);
}
}
Выход: [1,4,3,7]
Вы можете сделать это в 'O (n log n)', сначала отсортировав массивы. –
Конечно, это первое. Спасибо –
И самое быстрое, что вы могли бы сделать это, было бы * 'O (n + m)' *, так как в любом случае вам нужно перебирать элементы из обоих массивов. – Idos