每一个子集合的XOR结果其实都可以看作,这个完整的array里的某几个元素是或否参与全array的XOR结果。所以不准确的说类似分治法的方式,每个元素都一分为二,并向下递归调用,执行下一个元素的是或否参与XOR操作。
class Solution:
def subsetXORSum(self, nums: List[int]) -> int:
def divcon(res, index):
if index == len(nums):return res
return divcon(res^nums[index], index+1) + divcon(res, index+1)
res = 0
index = 0
return divcon(res, index)