Dada una array con 2n+1 enteros, n elementos aparecen dos veces en lugares arbitrarios de la array y un solo entero aparece solo una vez en algún lugar dentro. Encuentre el entero solitario con operaciones O(n) y memoria adicional O(1).
Ejemplos:
Input : { 1, 1, 2, 2, 3, 3, 4, 4, 5} Output : 5 Input : { 7, 9, 6, 8, 3, 7, 8, 6, 9} Output : 3
La idea es hacer XOR de todos los elementos. XOR de todos los elementos nos da el resultado. La idea se basa en las siguientes propiedades XOR.
- XOR de un número consigo mismo es 0.
- XOR de un número con 0 es el número.
Implementación:
C++
// CPP program to find only // element in an array where // every element appears twice. #include <bits/stdc++.h> using namespace std; // Find non repeating // number in an array int findNonRepeating(int arr[], int n) { int res = 0; for (int i = 0; i < n; i++) res = res ^ arr[i]; return res; } // Driver Code int main() { int arr[] = { 3, 8, 3, 2, 2, 1, 1 }; int n = sizeof(arr) / sizeof(arr[0]); cout << findNonRepeating(arr, n); return 0; }
Java
// Java program to find only element // in an array where every element // appears twice. import java.io.*; class GFG { // Find non repeating // number in an array static int findNonRepeating(int []arr, int n) { int res = 0; for (int i = 0; i < n; i++) res = res ^ arr[i]; return res; } // Driver Code static public void main (String[] args) { int []arr = {3, 8, 3, 2, 2, 1, 1}; int n = arr.length; System.out.println(findNonRepeating(arr, n)); } } // This code is contributed by vt_m.
Python
# Find non repeating # number in an array def findNonRepeating(a, n): res = 0 # XOR of all numbers for i in range(n): res ^= a[i] return res # Driver code a = [ 3, 8, 3, 2, 2, 1, 1 ] n = len(a) print findNonRepeating(a, n) # This code is contributed # by 'Striver'.
C#
// C# program to find only element // in an array where every element // appears twice. using System; class GFG { // Find non repeating number in an array static int findNonRepeating(int []arr, int n) { int res = 0; for (int i = 0; i < n; i++) res = res ^ arr[i]; return res; } // Driver Code static public void Main (String []args) { int []arr = {3, 8, 3, 2, 2, 1, 1}; int n = arr.Length; Console.WriteLine(findNonRepeating(arr, n)); } } // This code is contributed by vt_m.
PHP
<?php // PHP program to find only // element in an array where // every element appears twice. // Find non repeating number // in an array function findNonRepeating($arr, $n) { $res = 0; for ($i = 0; $i < $n; $i++) $res = $res ^ $arr[$i]; return $res; } // Driver Code $arr = array( 3, 8, 3, 2, 2, 1, 1 ); $n = sizeof($arr); echo(findNonRepeating($arr, $n)); // This code is contributed by Ajit. ?>
Javascript
<script> // Javascript program to find only // element in an array where // every element appears twice. // Find non repeating // number in an array function findNonRepeating(arr, n) { let res = 0; for (let i = 0; i < n; i++) res = res ^ arr[i]; return res; } // Driver Code let arr = [ 3, 8, 3, 2, 2, 1, 1 ]; let n = arr.length; document.write(findNonRepeating(arr, n)); </script>
8
Complejidad temporal: O(n).
Complejidad espacial: O(1).
Este artículo es una contribución de ASIPU PAWAN KUMAR . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA