思路:
令 s = nums 数组的异或和
要令 s = k, 即要令 s k = 0, 为异或
令 x = s k , 对 nums 数组中的任一元素的任一 bit 进行翻转,即对 x 的任一 bit 进行翻转,最后要令 x = 0 . 则最少的操作次数即为 x 中 bit 为 1 的位数。
代码如下:
class Solution {
public int minOperations(int[] nums, int k) {
for(int x:nums){
k^=x;
}
return Integer.bitCount(k);
}
}