El problema:
Dada una matriz de números enteros, cada elemento aparece dos veces excepto uno. Encuentra ese único.
Solución Java 1
La clave para resolver este problema es la manipulación de bits. XOR devolverá 1 solo en dos bits diferentes. Entonces, si dos números son iguales, XOR devolverá 0. Finalmente, solo queda un número.
public int singleNumber(int[] A) { int x = 0; for (int a : A) { x = x ^ a; } return x; } |
Solución Java 2
public int singleNumber(int[] A) { HashSet<Integer> set = new HashSet<Integer>(); for (int n : A) { if (!set.add(n)) set.remove(n); } Iterator<Integer> it = set.iterator(); return it.next(); } |
La pregunta ahora es ¿conoce otras formas de hacer esto?