列表

详情


1442. 形成两个异或相等数组的三元组数目

给你一个整数数组 arr

现需要从数组中取三个下标 ijk ,其中 (0 <= i < j <= k < arr.length)

ab 定义如下:

注意:^ 表示 按位异或 操作。

请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。

 

示例 1:

输入:arr = [2,3,1,6,7]
输出:4
解释:满足题意的三元组分别是 (0,1,2), (0,2,2), (2,3,4) 以及 (2,4,4)

示例 2:

输入:arr = [1,1,1,1,1]
输出:10

示例 3:

输入:arr = [2,3]
输出:0

示例 4:

输入:arr = [1,3,5,7,9]
输出:3

示例 5:

输入:arr = [7,11,12,9,5,2,7,17,22]
输出:8

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int countTriplets(vector<int>& arr) { } };

python3 解法, 执行用时: 60 ms, 内存消耗: 14.9 MB, 提交时间: 2021-05-18 11:47:48

class Solution:
    def countTriplets(self, arr: List[int]) -> int:
        n = len(arr)
        ans = 0;
        for i in range(0, n-1):
            sum = 0;
            for k in range(i, n):
                sum ^= arr[k];
                if sum == 0 and k > i:
                    ans += k - i
        return ans
            

上一题