给出一个大小为n的数组 a 和整数 t,定义区间 [l, r] (0<=l<r<=n-1),若存在下标i、j (1<=i <= j <= r)属于区间[l,r] ,且 a[i] ^ a[j] = t,那么称 [l, r] 是非奇特区间,如不存在,则 [l, r] 是奇特区间。求a数组里的奇特区间个数。——> (可以与查找数组中是否两数之和等于target相等题目相对应,将键值对合理存储)
输入
[2, 4, 8], 6
输出
1
先验:a ^ b =c ——> a ^ c = b
以 int[] a = { 14, 3, 2, 1, 4, 8, 9},t =6 为例:
- 使用 max 记录当前满足条件的最大下标值;res 保存最终结果;
- map存储 <Integer, Integer> = a[i] ^ t,i;
- 遍历数组,当遇到的 a[i] 在 map 里存在,则证明存在奇特区间,且
为奇特区间。
遍历完数组,map的状态如下:
int[] a 14