Dada una matriz de enteros, cada elemento aparece dos veces, excepto uno. Encuentra ese solo. Podemos usar la operación XOR. Como cada número XOR en sí mismo, los resultados serán cero. Entonces XORamos todos los números enteros en la matriz, y el resultado es el único que queremos encontrar. Aquí es el código de la versión de Java:
public class Solution {
public int singleNumber(int[] A) {
int res=0;
for(int i=0;i<A.length;i++){
res=res^A[i];
}
return res;
}
}
Seguimiento 1: Dada una matriz de enteros, cada elemento aparece tres veces a excepción de uno. Encuentra ese solo. Nota: Su algoritmo debe tener una complejidad de tiempo de ejecución lineal. ¿Podrías implementarlo sin usar memoria extra? Para este problema, no podemos usar la operación XOR. La mejor manera de resolver este problema es usar "bit count". Cree un recuento de arrays de 32 int de longitud [32]. count [i] significa cuántos '1' en el i-ésimo bit de todos los enteros. Si el recuento [i] se podría dividir por 3, entonces no hacemos caso de este bit, de lo sacamos este bit y formamos la result.Below es el código de la versión de Java:
public class Solution {
public int singleNumber(int[] A) {
int res=0;
int[] count=new int[32];
for(int i=0;i<32;i++){
for(int j=0;j<A.length;j++){
if(((A[j]>>i)&1)==1){
count[i]=count[i]+1;
}
}
if((count[i]%3)!=0){
res=res|(1<<i);
}
}
return res;
}
}
Seguimiento 2: Teniendo en cuenta una serie de enteros, cada elemento aparece dos veces excepto dos. Encuentra eso dos enteros. Solución: Primero, XOR todos los enteros de la matriz podemos obtener un resultado. (Supongamos que es c) Segundo, desde el bit menos significativo al más significativo, encuentre la primera posición '1' (suponga que la posición es pag). En tercer lugar, dividimos los enteros en dos grupos, la posición p es '1' en un grupo, '0' en otro grupo. En cuarto lugar, XOR todos los enteros en los dos grupos, y los resultados son los dos enteros que queremos.
Esa es una solución bastante buena con buena eficiencia. – glasnt
¿Es esta una pregunta de tarea?Si es así, está bien, como lo pediste bien, con el suministro de tu intento de solución. Pero deberías etiquetarlo tal como es. –
Por cierto, esa palabra "analizar". No creo que signifique lo que piensas que significa. –