Check if the array has an element which is equal to XOR of remaining elements
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++
// 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
// 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
# 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#
// 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 |
Javascript
<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)
Please Login to comment...