Dada una array A[] que tiene n elementos positivos. La tarea de crear otro arreglo B[] como B[i] es XOR de todos los elementos del arreglo A[] excepto A[i].
Ejemplos:
Input : A[] = {2, 1, 5, 9} Output : B[] = {13, 14, 10, 6} Input : A[] = {2, 1, 3, 6} Output : B[] = {4, 7, 5, 0}
Enfoque ingenuo:
podemos calcular simplemente B[i] como XOR de todos los elementos de A[] excepto A[i], como
for (int i = 0; i < n; i++) { B[i] = 0; for (int j = 0; j < n; j++) if ( i != j) B[i] ^= A[j]; }
La complejidad del tiempo para este enfoque ingenuo es O (n^2).
El espacio auxiliar para este enfoque ingenuo es O (n).
Enfoque optimizado:
primero calcule XOR de todos los elementos de la array A[] diga ‘xor’, y para cada elemento de la array A[] calcule A[i] = xor ^ A[i] .
int xor = 0; for (int i = 0; i < n; i++) xor ^= A[i]; for (int i = 0; i < n; i++) A[i] = xor ^ A[i];
La complejidad del tiempo para este enfoque es O (n).
El espacio auxiliar para este enfoque es O (1).
C++
// C++ program to construct array from // XOR of elements of given array #include <bits/stdc++.h> using namespace std; // function to construct new array void constructXOR(int A[], int n) { // calculate xor of array int XOR = 0; for (int i = 0; i < n; i++) XOR ^= A[i]; // update array for (int i = 0; i < n; i++) A[i] = XOR ^ A[i]; } // Driver code int main() { int A[] = { 2, 4, 1, 3, 5}; int n = sizeof(A) / sizeof(A[0]); constructXOR(A, n); // print result for (int i = 0; i < n; i++) cout << A[i] << " "; return 0; }
Java
// Java program to construct array from // XOR of elements of given array class GFG { // function to construct new array static void constructXOR(int A[], int n) { // calculate xor of array int XOR = 0; for (int i = 0; i < n; i++) XOR ^= A[i]; // update array for (int i = 0; i < n; i++) A[i] = XOR ^ A[i]; } // Driver code public static void main(String[] args) { int A[] = { 2, 4, 1, 3, 5}; int n = A.length; constructXOR(A, n); // print result for (int i = 0; i < n; i++) System.out.print(A[i] + " "); } } // This code is contributed by Anant Agarwal.
Python3
# Python 3 program to construct # array from XOR of elements # of given array # function to construct new array def constructXOR(A, n): # calculate xor of array XOR = 0 for i in range(0, n): XOR ^= A[i] # update array for i in range(0, n): A[i] = XOR ^ A[i] # Driver code A = [ 2, 4, 1, 3, 5 ] n = len(A) constructXOR(A, n) # print result for i in range(0,n): print(A[i], end =" ") # This code is contributed by Smitha Dinesh Semwal
C#
// C# program to construct array from // XOR of elements of given array using System; class GFG { // function to construct new array static void constructXOR(int []A, int n) { // calculate xor of array int XOR = 0; for (int i = 0; i < n; i++) XOR ^= A[i]; // update array for (int i = 0; i < n; i++) A[i] = XOR ^ A[i]; } // Driver code public static void Main() { int []A = { 2, 4, 1, 3, 5}; int n = A.Length; constructXOR(A, n); // print result for (int i = 0; i < n; i++) Console.Write(A[i] + " "); } } // This code is contributed by nitin mittal
PHP
<?php // Program to construct array from // XOR of elements of given array // function to construct new array function constructXOR(&$A, $n) { // calculate xor of array $XOR = 0; for ($i = 0; $i < $n; $i++) $XOR ^= $A[$i]; // update array for ($i = 0; $i < $n; $i++) $A[$i] = $XOR ^ $A[$i]; } // Driver code $A = array( 2, 4, 1, 3, 5); $n = sizeof($A); constructXOR($A, $n); // print result for ($i = 0; $i < $n; $i++) echo $A[$i] ." "; // This code is contributed // by ChitraNayal ?>
Javascript
<script> // JavaScript program to construct array from // XOR of elements of given array // function to construct new array function constructXOR(A, n) { // calculate xor of array let XOR = 0; for (let i = 0; i < n; i++) XOR ^= A[i]; // update array for (let i = 0; i < n; i++) A[i] = XOR ^ A[i]; } // Driver code let A = [ 2, 4, 1, 3, 5]; let n = A.length; constructXOR(A, n); // print result for (let i = 0; i < n; i++) document.write(A[i] + " "); // This code is contributed by Surbhi Tyagi. </script>
Producción:
3 5 0 2 4
Problema relacionado:
un rompecabezas de array de productos
Este artículo es una contribución de Shivam Pradhan (anuj_charm) . 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.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
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