LeetCode in Kotlin

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

class Solution {
    fun subsetXORSum(nums: IntArray): Int {
        return if (nums.isEmpty()) {
            0
        } else {
            subsetXORSum(nums, 0, 0)
        }
    }

    private fun subsetXORSum(nums: IntArray, currIndex: Int, res: Int): Int {
        if (currIndex == nums.size) {
            return res
        }
        val sum1 = subsetXORSum(nums, currIndex + 1, nums[currIndex] xor res)
        val sum2 = subsetXORSum(nums, currIndex + 1, res)
        return sum1 + sum2
    }
}