


题解
根据上述图可以根据二进制运算获取所有的子集,但是可以使用二进制获取所有子集需要有题目的这一句话才能够使用注意:在本题中,元素相同的不同子集应多次计数。
也就是对于{2,2,3,4,5}
的子集不会简化成{2,3,4,5}


public static int subsetXORSum(int[] nums) {
int n = nums.length, sum = 0;
for (int i = 0; i < (1 << n); i++) {
int temp = 0;
for (int j = 0; j < n; j++) {
if (((i >> j) & 1) == 1) {
temp ^= nums[j];
}
}
sum += temp;
}
return sum;
}