Vamos a considerar dos conjuntos ordenados: -
int[] array1 = {1,2,3,4,5,6,7,8};
int[] array2 = {2,4,8};
int i=0, j=0; //taken two pointers
Mientras bucle se ejecutará hasta que ambos punteros llegan hasta las respectivas longitudes.
while(i<array1.length || j<array2.length){
if(array1[i] > array2[j]) //if first array element is bigger then increment 2nd pointer
j++;
else if(array1[i] < array2[j]) // same checking for second array element
i++;
else { //if both are equal then print them and increment both pointers
System.out.print(a1[i]+ " ");
if(i==a1.length-1 ||j==a2.length-1) //one additional check for ArrayOutOfBoundsException
break;
else{
i++;
j++;
}
}
}
salida será: -
2 4 8
No vamos a hacer su tarea para usted – shoosh
Esta es una pregunta de la entrevista. – user288609
Haz tus deberes ahora, y en 5 años se convertirá en tu colega y harás su trabajo, o peor, depurará su trabajo. – Guge