[LeetCode] Sum of All Subset XOR Totals

1863. Sum of All Subset XOR Totals

The XOR total of an array is defined as the bitwise XOR of all its elements, or 0 if the array is empty.

  • For example, the XOR total of the array [2,5,6] is 2 XOR 5 XOR 6 = 1.

Given an array nums, return the sum of all XOR totals for every subset of nums.

Note: Subsets with the same elements should be counted multiple times.

An array a is a subset of an array b if a can be obtained from b by deleting some (possibly zero) elements of b.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
int res = 0;
void dfs(int left, int start, int XOR, vector<int>& nums) {
if(!left) {
res += XOR;
return;
}
for(int i = start; i <= nums.size() - left; i++) {
dfs(left - 1, i + 1, XOR xor nums[i], nums);
}
}
public:
int subsetXORSum(vector<int>& nums) {
for(int i = 1; i <= nums.size(); i++) {
dfs(i, 0, 0, nums);
}

return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2021/05/16/PS/LeetCode/sum-of-all-subset-xor-totals/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.