In this Leetcode A XOR operation problem solution, You are given a set S of distinct positive integers of size n (n is always even). Print the minimum positive integer k that is greater than 0 such that after replacing each element e of the set S with e xor k, set S remains the same. Print -1 if there is no such k.


HackerEarth A XOR operation problem solution


HackerEarth A XOR operation problem solution.

#include<bits/stdc++.h>
using namespace std;
#define int long long int
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        vector<int> nums(n);
        for(int i=0;i<n;i++)
        {
            cin>>nums[i];
        }
        unordered_map<int,int> mp;
        int x=0LL;
        for (int i : nums)
        {    
            x^=i;
            mp[i]=1;
        }
        int flag=0;
        for(int i : nums)
        {
            int temp=i^x;
            if(mp[temp]!=1)
            {
                flag=1;
            }
        }
        if(flag){
            cout<<-1<<'\n';
        }
        else{
            cout<<x<<'\n';
        }
    }
}

Second solution

t = int(input())
while t > 0:
    t -= 1
    n = int(input())
    s = set(map(int, input().split()))
    a = list(s)
    x = a[0]
    done = False
    for y in a[1:]:
        if x == y:
            continue
        k = x ^ y
        if all(x ^ k in s for x in a):
            print(k)
            done = True
            break
    if not done:
        print(-1)