2997. Minimum Number of Operations to Make Array XOR Equal to K
Medium
You are given a 0-indexed integer array nums and a positive integer k.
You can apply the following operation on the array any number of times:
- Choose
anyelement of the array andflipa bit in itsbinaryrepresentation. Flipping a bit means changing a0to1or vice versa.
Return the minimum number of operations required to make the bitwise XOR of all elements of the final array equal to k.
Note that you can flip leading zero bits in the binary representation of elements. For example, for the number (101)(1101)2 you can flip the fourth bit and obtain (1101)2.
Example 1:
- Input: nums = [2,1,3,4], k = 1
- Output: 2
-
Explanation: We can do the following operations:
- Choose element 2 which is 3 == (011)2, we flip the first bit and we obtain (010)2 == 2. nums becomes [2,1,2,4].
- Choose element 0 which is 2 == (010)2, we flip the third bit and we obtain (110)2 = 6. nums becomes [6,1,2,4].
- The XOR of elements of the final array is (6 XOR 1 XOR 2 XOR 4) == 1 == k.
- It can be shown that we cannot make the XOR equal to k in less than 2 operations.
Example 2:
- Input: nums = [2,0,2,0], k = 0
- Output: [0]
- Explanation: The XOR of elements of the array is (2 XOR 0 XOR 2 XOR 0) == 0 == k. So no operation is needed.
Constraints:
1 <= nums.length <= 1050 <= nums[i] <= 1060 <= k <= 106
Solution:
class Solution {
/**
* @param Integer[] $nums
* @param Integer $k
* @return Integer
*/
function minOperations($nums, $k) {
$xors = array_reduce($nums, function($carry, $item) {
return $carry ^ $item;
}, 0);
return substr_count(decbin($k ^ $xors), '1');
}
}
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
Top comments (0)