Off-by-one on range boundaries
Wrong move: Loop endpoints miss first/last candidate.
Usually fails on: Fails on minimal arrays and exact-boundary answers.
Fix: Re-derive loops from inclusive/exclusive ranges before coding.
Build confidence with an intuition-first walkthrough focused on array fundamentals.
The XOR total of an array is defined as the bitwise XOR of all its elements, or 0 if the array is empty.
[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.
Example 1:
Input: nums = [1,3] Output: 6 Explanation: The 4 subsets of [1,3] are: - The empty subset has an XOR total of 0. - [1] has an XOR total of 1. - [3] has an XOR total of 3. - [1,3] has an XOR total of 1 XOR 3 = 2. 0 + 1 + 3 + 2 = 6
Example 2:
Input: nums = [5,1,6] Output: 28 Explanation: The 8 subsets of [5,1,6] are: - The empty subset has an XOR total of 0. - [5] has an XOR total of 5. - [1] has an XOR total of 1. - [6] has an XOR total of 6. - [5,1] has an XOR total of 5 XOR 1 = 4. - [5,6] has an XOR total of 5 XOR 6 = 3. - [1,6] has an XOR total of 1 XOR 6 = 7. - [5,1,6] has an XOR total of 5 XOR 1 XOR 6 = 2. 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:
1 <= nums.length <= 121 <= nums[i] <= 20Problem summary: 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.
Start with the most direct exhaustive search. That gives a correctness anchor before optimizing.
Pattern signal: Array · Math · Backtracking · Bit Manipulation
[1,3]
[5,1,6]
[3,4,5,6,7,8]
Source-backed implementations are provided below for direct study and interview prep.
// Accepted solution for LeetCode #1863: Sum of All Subset XOR Totals
class Solution {
public int subsetXORSum(int[] nums) {
int n = nums.length;
int ans = 0;
for (int i = 0; i < 1 << n; ++i) {
int s = 0;
for (int j = 0; j < n; ++j) {
if ((i >> j & 1) == 1) {
s ^= nums[j];
}
}
ans += s;
}
return ans;
}
}
// Accepted solution for LeetCode #1863: Sum of All Subset XOR Totals
func subsetXORSum(nums []int) (ans int) {
n := len(nums)
for i := 0; i < 1<<n; i++ {
s := 0
for j, x := range nums {
if i>>j&1 == 1 {
s ^= x
}
}
ans += s
}
return
}
# Accepted solution for LeetCode #1863: Sum of All Subset XOR Totals
class Solution:
def subsetXORSum(self, nums: List[int]) -> int:
ans, n = 0, len(nums)
for i in range(1 << n):
s = 0
for j in range(n):
if i >> j & 1:
s ^= nums[j]
ans += s
return ans
// Accepted solution for LeetCode #1863: Sum of All Subset XOR Totals
impl Solution {
pub fn subset_xor_sum(nums: Vec<i32>) -> i32 {
let n = nums.len();
let mut ans = 0;
for i in 0..(1 << n) {
let mut s = 0;
for j in 0..n {
if ((i >> j) & 1) == 1 {
s ^= nums[j];
}
}
ans += s;
}
ans
}
}
// Accepted solution for LeetCode #1863: Sum of All Subset XOR Totals
function subsetXORSum(nums: number[]): number {
let ans = 0;
const n = nums.length;
for (let i = 0; i < 1 << n; ++i) {
let s = 0;
for (let j = 0; j < n; ++j) {
if ((i >> j) & 1) {
s ^= nums[j];
}
}
ans += s;
}
return ans;
}
Use this to step through a reusable interview workflow for this problem.
Generate every possible combination without any filtering. At each of n positions we choose from up to n options, giving nⁿ total candidates. Each candidate takes O(n) to validate. No pruning means we waste time on clearly invalid partial solutions.
Backtracking explores a decision tree, but prunes branches that violate constraints early. Worst case is still factorial or exponential, but pruning dramatically reduces the constant factor in practice. Space is the recursion depth (usually O(n) for n-level decisions).
Review these before coding to avoid predictable interview regressions.
Wrong move: Loop endpoints miss first/last candidate.
Usually fails on: Fails on minimal arrays and exact-boundary answers.
Fix: Re-derive loops from inclusive/exclusive ranges before coding.
Wrong move: Temporary multiplications exceed integer bounds.
Usually fails on: Large inputs wrap around unexpectedly.
Fix: Use wider types, modular arithmetic, or rearranged operations.
Wrong move: Mutable state leaks between branches.
Usually fails on: Later branches inherit selections from earlier branches.
Fix: Always revert state changes immediately after recursive call.