当前位置 博文首页 > 数据结构和算法:LeetCode 1442. 形成两个异或相等数组的三元组

    数据结构和算法:LeetCode 1442. 形成两个异或相等数组的三元组

    作者:[db:作者] 时间:2021-09-09 13:35

    截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
    下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
    提取码:6666

    在这里插入图片描述
    在这里插入图片描述
    也就是说如果数组中连续n个元素的异或结果是0,那么可能的组合就有n-1种。搞懂了上面的分析过程,代码就简单多了。

    来看下代码

    public int countTriplets(int[] arr) {
        //所有可能的组合
        int total = 0;
        int length = arr.length;
        //判断数组从i到j的元素异或结果是否是0
        for (int i = 0; i < length - 1; i++) {
            int xor = arr[i];
            for (int j = i + 1; j < length; j++) {
                xor ^= arr[j];
                //如果数组从i到j的异或结果是0,那么他们
                //可能的组合就是j-i
                if (xor == 0) {
                    total += (j - i);
                }
            }
        }
        return total;
    }
    
    cs