aboutsummaryrefslogtreecommitdiff
path: root/sum_subset_xor.py
diff options
context:
space:
mode:
Diffstat (limited to 'sum_subset_xor.py')
-rw-r--r--sum_subset_xor.py22
1 files changed, 3 insertions, 19 deletions
diff --git a/sum_subset_xor.py b/sum_subset_xor.py
index deb88ed..0560197 100644
--- a/sum_subset_xor.py
+++ b/sum_subset_xor.py
@@ -1,4 +1,6 @@
# 1863. Sum of All Subset XOR Totals
+from functools import reduce
+from operator import or_
"""
the xor total of an array is defined as the bitwise xor of all its elements
@@ -14,25 +16,7 @@ class Solution(object):
:type nums: List[int]
:rtype: int
"""
-
- def backtrack(nums, idx, tar, cnt):
- if idx == len(nums):
- cnt.append(tar[:])
- return
- tar.append(nums[idx])
- backtrack(nums, idx + 1, tar, cnt)
- tar.pop()
- backtrack(nums, idx + 1, tar, cnt)
-
- cnt = []
- backtrack(nums, 0, [], cnt)
- ans = 0
- for i in cnt:
- total = 0
- for n in i:
- total ^= n
- ans += total
- return ans
+ return reduce(or_, nums) << (len(nums) - 1)
if __name__ == "__main__":