Buonasera, dovrei scrivere un metodo che dati due array in input , restituisce true o false a seconda se il primo è sottoinsieme del secondo. Il problema è che deve avere tempo esecuzione peggiore O n log n , quindi non posso usare un for annidato. ( non posso usare gli hashset o metodi ricorsivi )
La mia idea iniziale era
public static boolean abc(int [] a, int[] b) {
boolean ris=false;
mergeSort2(a);
mergeSort2(b);
int j=0;
int x=0;
for(int i=0;i<b.length;i++) {
if(a[x]==b[i]) {
j++;
x++;
}
}
if(j==a.length) {
ris=true;
}
return ris;
Il problema però è che in caso ci sono elementi ripetuti nell'array a, tutto questo non va bene.