Count Triplets That Can Form Two Arrays of Equal XOR LeetCode solution in Python

1
class Solution:
2
def countTriplets(self, arr: List[int]) -> int:
3
s = [0]
4
n = len(arr)
5
if n <= 1:
6
return 0
7
for i in range(n):
8
s.append(s[-1] ^ arr[i])
9
# a = s[i] ^ s[j], b = s[j] ^ s[k+1]
10
count = defaultdict(int)
11
# a = b <-> a ^ b == 0 <-> (s[i] ^ s[j]) ^ (s[j] ^ s[k+1]) == 0
12
# <-> s[i] ^ (s[j] ^ m ) = 0 (where m = s[j] ^ s[k+1])
13
# <-> s[i] ^ s[k+1] == 0 <-> s[i] == s[k+1]
14

15
res = 0
16
# len(s) == n+1, 0<=i<=n-2, 1<=k<=n-1, i+1<=j<=k
17
for i in range(n - 1):
18
for k in range(i + 1, n):
19
if s[i] == s[k + 1]:
20
res += k - i
21
return res

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0