LeetCode-in-Java

1863. Sum of All Subset XOR Totals

Easy

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

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.

Example 1:

Input: nums = [1,3]

Output: 6

Explanation: The 4 subsets of [1,3] are:

0 + 1 + 3 + 2 = 6

Example 2:

Input: nums = [5,1,6]

Output: 28

Explanation: The 8 subsets of [5,1,6] are:

0 + 5 + 1 + 6 + 4 + 3 + 7 + 2 = 28

Example 3:

Input: nums = [3,4,5,6,7,8]

Output: 480

Explanation: The sum of all XOR totals for every subset is 480.

Constraints:

Solution

public class Solution {
    public int subsetXORSum(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        return subsetXORSum(nums, 0, 0);
    }

    private int subsetXORSum(int[] nums, int currIndex, int res) {
        if (currIndex == nums.length) {
            return res;
        }
        int sum1 = subsetXORSum(nums, currIndex + 1, nums[currIndex] ^ res);
        int sum2 = subsetXORSum(nums, currIndex + 1, res);
        return sum1 + sum2;
    }
}