Given an array arr[] of N elements, the task is to check if the array has an element which is equal to the XOR of all the remaining elements.
Examples:
Input: arr[] = { 8, 2, 4, 15, 1 }
Output: Yes
8 is the required element as 2 ^ 4 ^ 15 ^ 1 = 8.
Input: arr[] = {4, 2, 3}
Output: No
Approach: First, take the XOR of all the elements of the array and store it in a variable xorArr. Now traverse the complete array again and for every element, calculate the xor of the array elements excluding the current element arr[i] i.e. x = xorArr ^ arr[i].
If x = arr[i] then arr[i] is the required element and hence print Yes. If no such element is found then print No.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function that returns true if the array // contains an element which is equal to // the XOR of the remaining elements bool containsElement( int arr[], int n)
{ // To store the XOR of all
// the array elements
int xorArr = 0;
for ( int i = 0; i < n; ++i)
xorArr ^= arr[i];
// For every element of the array
for ( int i = 0; i < n; ++i) {
// Take the XOR after excluding
// the current element
int x = xorArr ^ arr[i];
// If the XOR of the remaining elements
// is equal to the current element
if (arr[i] == x)
return true ;
}
// If no such element is found
return false ;
} // Driver code int main()
{ int arr[] = { 8, 2, 4, 15, 1 };
int n = sizeof (arr) / sizeof (arr[0]);
if (containsElement(arr, n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
// Java implementation of the approach class GFG
{ // Function that returns true if the array // contains an element which is equal to // the XOR of the remaining elements static boolean containsElement( int [] arr, int n)
{ // To store the XOR of all
// the array elements
int xorArr = 0 ;
for ( int i = 0 ; i < n; ++i)
xorArr ^= arr[i];
// For every element of the array
for ( int i = 0 ; i < n; ++i)
{
// Take the XOR after excluding
// the current element
int x = xorArr ^ arr[i];
// If the XOR of the remaining elements
// is equal to the current element
if (arr[i] == x)
return true ;
}
// If no such element is found
return false ;
} // Driver code public static void main (String[] args)
{ int [] arr = { 8 , 2 , 4 , 15 , 1 };
int n = arr.length;
if (containsElement(arr, n))
System.out.println( "Yes" );
else
System.out.println( "No" );
} } // This code is contributed by ihritik |
# Python3 implementation of the approach # Function that returns true if the array # contains an element which is equal to # the XOR of the remaining elements def containsElement(arr, n):
# To store the XOR of all
# the array elements
xorArr = 0
for i in range (n):
xorArr ^ = arr[i]
# For every element of the array
for i in range (n):
# Take the XOR after excluding
# the current element
x = xorArr ^ arr[i]
# If the XOR of the remaining elements
# is equal to the current element
if (arr[i] = = x):
return True
# If no such element is found
return False
# Driver Code arr = [ 8 , 2 , 4 , 15 , 1 ]
n = len (arr)
if (containsElement(arr, n)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by Mohit Kumar |
// C# implementation of the approach using System;
class GFG
{ // Function that returns true if the array // contains an element which is equal to // the XOR of the remaining elements static bool containsElement( int [] arr, int n)
{ // To store the XOR of all
// the array elements
int xorArr = 0;
for ( int i = 0; i < n; ++i)
xorArr ^= arr[i];
// For every element of the array
for ( int i = 0; i < n; ++i)
{
// Take the XOR after excluding
// the current element
int x = xorArr ^ arr[i];
// If the XOR of the remaining elements
// is equal to the current element
if (arr[i] == x)
return true ;
}
// If no such element is found
return false ;
} // Driver code public static void Main ()
{ int [] arr = { 8, 2, 4, 15, 1 };
int n = arr.Length;
if (containsElement(arr, n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
} } // This code is contributed by ihritik |
<script> // JavaScript implementation of the approach // Function that returns true if the array // contains an element which is equal to // the XOR of the remaining elements function containsElement(arr, n)
{ // To store the XOR of all
// the array elements
let xorArr = 0;
for (let i = 0; i < n; ++i)
xorArr ^= arr[i];
// For every element of the array
for (let i = 0; i < n; ++i) {
// Take the XOR after excluding
// the current element
let x = xorArr ^ arr[i];
// If the XOR of the remaining elements
// is equal to the current element
if (arr[i] == x)
return true ;
}
// If no such element is found
return false ;
} // Driver code let arr = [ 8, 2, 4, 15, 1 ];
let n = arr.length;
if (containsElement(arr, n))
document.write( "Yes" );
else
document.write( "No" );
// This code is contributed by Surbhi Tyagi. </script> |
Yes
Time complexity: O(n) where n is size of input array
Auxiliary Space: O(1)