classSolution: defcountTriplets(self, arr: List[int]) -> int: n = len(arr) s = [0] for val in arr: s.append(s[-1] ^ val) ans = 0 for i inrange(n): for j inrange(i + 1, n): for k inrange(j, n): if s[i] == s[k + 1]: ans += 1 return ans
4.2 二重循环
当等式 成立时, 的范围内任意 都是符合要求的, 对应的三元组个数为
,因此只需枚举 和 。
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution: defcountTriplets(self, arr: List[int]) -> int: n = len(arr) s = [0] for val in arr: s.append(s[-1] ^ val) ans = 0 for i inrange(n): for k inrange(i + 1, n): if s[i] == s[k + 1]: ans += k - i return ans