Replace every element of the array with BitWise XOR of all other
Given an array of integers. The task is to replace every element by the bitwise xor of all other elements of the array.
Examples:
Input: arr[] = { 2, 3, 3, 5, 5 }
Output: 0 1 1 7 7
Bitwise Xor of 3, 3, 5, 5 = 0
Bitwise Xor of 2, 3, 5, 5 = 1
Bitwise Xor of 2, 3, 5, 5 = 1
Bitwise Xor of 2, 3, 3, 5 = 7
Bitwise Xor of 2, 3, 3, 5 = 7
Input : arr[] = { 1, 2, 3 }
Output : 1 2 3
Approach :
- First, take the bitwise xor of all the elements of the array and store it in a variable let’s X.
- Now replace each element by the xor of X and that element, since XORing the same element will cancel out leaving the xor of all the other elements.
- Print the modified array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void ReplaceElements( int arr[], int n)
{
int X = 0;
for ( int i = 0; i < n; ++i) {
X ^= arr[i];
}
for ( int i = 0; i < n; ++i) {
arr[i] = X ^ arr[i];
}
}
int main()
{
int arr[] = { 2, 3, 3, 5, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
ReplaceElements(arr, n);
for ( int i = 0; i < n; ++i) {
cout << arr[i] << " " ;
}
return 0;
}
|
Java
import java.io.*;
class GFG {
static void ReplaceElements( int arr[], int n)
{
int X = 0 ;
for ( int i = 0 ; i < n; ++i) {
X ^= arr[i];
}
for ( int i = 0 ; i < n; ++i) {
arr[i] = X ^ arr[i];
}
}
public static void main (String[] args) {
int arr[] = { 2 , 3 , 3 , 5 , 5 };
int n = arr.length;
ReplaceElements(arr, n);
for ( int i = 0 ; i < n; ++i) {
System.out.print(arr[i] + " " );
}
}
}
|
Python 3
def ReplaceElements(arr, n):
X = 0
for i in range (n):
X ^ = arr[i]
for i in range (n):
arr[i] = X ^ arr[i]
if __name__ = = "__main__" :
arr = [ 2 , 3 , 3 , 5 , 5 ]
n = len (arr)
ReplaceElements(arr, n)
for i in range (n):
print (arr[i], end = " " )
|
C#
using System;
public class GFG{
static void ReplaceElements( int []arr, int n)
{
int X = 0;
for ( int i = 0; i < n; ++i) {
X ^= arr[i];
}
for ( int i = 0; i < n; ++i) {
arr[i] = X ^ arr[i];
}
}
static public void Main (){
int []arr = { 2, 3, 3, 5, 5 };
int n = arr.Length;
ReplaceElements(arr, n);
for ( int i = 0; i < n; ++i) {
Console.Write(arr[i] + " " );
}
}
}
|
PHP
<?php
function ReplaceElements( $arr , $n )
{
$X = 0;
for ( $i = 0; $i < $n ; ++ $i )
{
$X ^= $arr [ $i ];
}
for ( $i = 0; $i < $n ; ++ $i )
{
$arr [ $i ] = $X ^ $arr [ $i ];
}
return $arr ;
}
$arr = array ( 2, 3, 3, 5, 5 );
$n = sizeof( $arr );
$arr1 = ReplaceElements( $arr , $n );
for ( $i = 0; $i < $n ; ++ $i )
{
echo ( $arr1 [ $i ] . " " );
}
?>
|
Javascript
<script>
function ReplaceElements(arr, n)
{
let X = 0;
for (let i = 0; i < n; ++i) {
X ^= arr[i];
}
for (let i = 0; i < n; ++i) {
arr[i] = X ^ arr[i];
}
}
let arr = [ 2, 3, 3, 5, 5 ];
let n = arr.length;
ReplaceElements(arr, n);
for (let i = 0; i < n; ++i) {
document.write(arr[i] + " " );
}
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1) because it is using constant space for variables
Last Updated :
17 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...