![]() |
VOOZH | about |
Given an array arr[] of integers and an integer K, we can perform the Bitwise OR operation between any array element and K any number of times. The task is to print the minimum number of such operations required to make any two elements of the array equal. If it is not possible to make any two elements of the array equal after performing the above-mentioned operation then print -1.
Examples:
Input: arr[] = {1, 9, 4, 3}, K = 3
Output: 1
We can OR a[0] with x, which makes it 3 which is equal to a[3]
Input : arr[] = {13, 26, 21, 15}, K = 13
Output : -1
Approach: The key observation is that if it is possible to make the desired array then the answer will be either 0, 1 or 2. It will never exceed 2.
Because, if (x | k) = y
then, no matter how many times you perform (y | k)
it'll always give y as the result.
Below is the implementation of the above approach:
1
Time Complexity: O(n)
Auxiliary Space: O(n)