首页 > 编程语言 > 详细

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

时间:2021-05-18 15:56:43      阅读:16      评论:0      收藏:0      [点我收藏+]

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

描述

技术分享图片

思路

  1. j 的取值范围为 [ i, k),且均在数组长度之内,不可越界
  2. 从 i 到 j - 1的异或值 == 从 j 到 k 的异或值
  3. a == b, 则 a ^ b == 0,此问题可转化为求子序列的异或为0
  4. 只要考虑 i 和 k 的 位置即可,j 在中间任何位置都可以,只要保证从 i 到 k 的异或值为0

代码

class Solution{
    public int countTriplets(int[] arr){
        // a == b ===> a ^ b == 0
        // 题目转换为求字串的异或为0
        int n = arr.length;
        int res = 0;
        for(int i = 0; i < n; i++){
            int t = arr[i];
            for(int k = i + 1; k < n; k++){
                t = t ^ arr[k];
                if(t == 0){
                    // j 在 [ i, k )区间任何位置都可以
                    res += k - i;
                }
            }
        }
        return res;
    }
}

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

原文:https://www.cnblogs.com/caoshikui/p/14780322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!