给出n个数字 a_1,...,a_n,问最多有多少不重叠的非空区间,使得每个区间内数字的xor都等于0。
输入描述:
第一行一个整数n; 第二行n个整数 a_1,...,a_n; 对于30%的数据,n<=20; 对于100%的数据,n<=100000, a_i<=100000;
输出描述:
一个整数表示最多的区间个数;
输入例子1:
4 3 0 2 2
输出例子1:
2
https://blog.youkuaiyun.com/a389850155/article/details/77923497
import java.util.HashMap;
import java.util.Scanner;
public class Main{
public static int Xor(int[] arr){
if(arr == null || arr.length <=0)
return 0;
int min = Integer.MIN_VALUE;
HashMap<Integer,Boolean> map = new HashMap<>();
int xor = 0;
int ans =0;
map.put(0,true);//全部为0的情况
for(int i = 0;i<arr.length;i++){
xor ^= arr[i];
if(map.containsKey(xor)){
ans++;
map.clear();
}
map.put(xor,true);
}
return ans;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[ ]arr = new int[N];
for(int i=0;i<N;i++){
arr[i]=sc.nextInt();
}
System.out.print(Xor(arr));
}
}