给你一个整数数组 arr 。

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

a 和 b 定义如下:

a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1]
b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]
注意:^ 表示 按位异或 操作。

请返回能够令 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)

代码

class Solution {public int countTriplets(int[] arr) {int n=arr.length,res=0;int [] temp=new int[n];temp[0]=arr[0];for(int i=1;i<n;i++)//生成前缀数组{temp[i]=arr[i]^temp[i-1];if(temp[i]==0)//区间内出现a==b的情况,才能导致区间xor为0for(int j=i-1;j>=0;j--)if(temp[j]==(temp[j]^temp[i]))res++;}for(int i=1;i<n;i++)//遍历子数组for(int j=i+1;j<n;j++){if((temp[i-1]^temp[j])==0)for(int k=j-1;k>=i;k--)if((temp[k]^temp[i-1])==(temp[k]^temp[j]))res++;}return res;}
}

leetcode1442. 形成两个异或相等数组的三元组数目相关推荐

  1. 文巾解题 leetcode1442. 形成两个异或相等数组的三元组数目

    1 题目描述 2 知识点补充(异或运算) 还有一条结论,是这道题比较重要的一个结论,就是  a^b=a^c ->b=c 这个结论是可以说明的,我们记a^b=a^c=x,则有b=c=a^x 3 解 ...

  2. leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)

    给你一个整数数组 arr . 现需要从数组中取三个下标 i.j 和 k ,其中 (0 <= i < j <= k < arr.length) . a 和 b 定义如下: a = ...

  3. LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)

    1. 题目 给你一个整数数组 arr . 现需要从数组中取三个下标 i.j 和 k ,其中 (0 <= i < j <= k < arr.length) . a 和 b 定义如 ...

  4. CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)

    题目链接 这道题比赛的时候没做出来,赛后补题的时候发现其实可以构造一个前缀异或和数组,然后根据初始化的第一个值进行填数,但是作为菜鸡的我虽然坚信自己的想法是正确的却想了很久也没有能够构造出来所谓的前缀 ...

  5. PHP遇到json解决的两个办法,转为数组,直接取值

    为什么80%的码农都做不了架构师?>>>    PHP遇到json解决的两个办法,转为数组,直接取值 //转为Array数据 $json = '{"a":1,&q ...

  6. java:合并两个排序的整数数组A和B变成一个新的数组。新数组也要有序。

    合并两个排序的整数数组A和B变成一个新的数组.新数组也要有序. 样例 1:输入: A=[1], B=[1]输出:[1,1]样例解释: 返回合并后的数组.样例 2:输入: A=[1,2,3,4], B= ...

  7. html5数组查找第二大数,2021-06-29:在两个都有序的数组中找整体第K小的数。

    2021-06-29:在两个都有序的数组中找整体第K小的数. 福大大 答案2021-06-29: 1.A和B长度不等的时候,需要把A和B的长度变成相等. A是短数组,B是长数组. 第k小的数,k从1开 ...

  8. Java黑皮书课后题第8章:*8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置。返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标

    *8.13(定位最大的元素)编写下面的方法,返回二维数组中最大元素的位置.返回值是包含两个元素的一维数组,这两个元素表示二维数组中最大元素的行下标和列下标 题目 题目描述与运行示例 破题 代码 题目 ...

  9. php数组循环便利,浅析PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里跟大家讨论下for和foreach两种方法.用这两种方法执行遍历的场景太多太多了,这里我们只针对以下两个数组作为例子来讨论.所谓管中窥豹,多少能理清一点两者的区 ...

最新文章

  1. 1357篇ECCV 2020论文打包下载!奖项公布:李飞飞高徒获最佳论文奖
  2. python3爬虫基础学习
  3. 中台创业潮起,你中台创业了吗?
  4. python中的抽象含义_Python中下划线的5种含义你都知道吗?
  5. JS中全局对象的属性和方法
  6. idea安装行号快速定位行快捷键以及设置方法
  7. 面试官问:为什么 Java 线程没有 Running 状态?我懵了
  8. 新手入门指导:Vue 2.0 的建议学习顺序
  9. PS教程第二十五课:自由选区
  10. 做大厂程序员是一种怎样的体验?这四位“百度程序员”说出了自己的看法!
  11. mySql学习笔记:比sql server书写要简单
  12. c++ 课程设计之车票管理系统
  13. python map函数1分钟数据生成5分钟_用map函数来完成Python并行任务的简单示例
  14. RTKLIB源码解析(三)、 Rinex文件读取(rinex.c)——1
  15. 为什么计算机休眠风扇还转,Win10电脑睡眠但风扇还在转怎么办
  16. C++语法学习笔记十四:派生类-调用顺序-访问等级-函数遮蔽
  17. 《C++大学教程》学习笔记(九)
  18. 机器人竟会写诗,诗人们大呼不敢相信!
  19. Jetbrains教育邮箱操作指南
  20. 一种字符编码猜测工具的实现方法

热门文章

  1. java开发实战经典答案百度云,含面试题+答案
  2. HTML如何添加锚点,分享一点面试小经验
  3. 网易资深Java架构师:java方法的定义和使用
  4. 爆赞!Jetpack-MVVM-高频提问和解答,满满干货指导
  5. caioj1522: [NOIP提高组2005]过河
  6. 200道物理学难题——038蚱蜢跃树
  7. 精确覆盖DLX算法模板
  8. 第三周作业(一)单元测试
  9. java 解决时间相减问题
  10. Statement和PreparedStatement之间的区别(转)