2588. 统计美丽子数组数目(前缀和)
2588. 统计美丽子数组数目(前缀和)
#### 题目

#### 解题思路
1、需要每个数最后变为0,且是和二进制有关,那么我们可以通过推导得出子数组中每个数异或后为0即是美丽子数组。
2、他需要的是连续子数组,那么我们可以维护一个数i,i为异或后的结果,初始值为0。将它存入一个哈希表中,如果这个数再一次出现那么说明出现了一次美丽子数组,同时i为0时那么该数组则为美丽子数组。这个也叫做前缀和算法。
#### 代码
```c++
class Solution {
public:
long long beautifulSubarrays(vector<int>& nums) {
long long ans =0;
map<int,int>res;
res[0]=1;
long long i=0;
for(int num:nums){
i^=num;
ans+=res[i]++;
}
return ans;
}
};
```

#### 完结撒花
前缀和就那么轻松学会了。我的力扣主页:[https://leetcode.cn/u/nan-wan-bu-qiu-39/](https://leetcode.cn/u/nan-wan-bu-qiu-39/)
更多算法内容:[https://api.timeplanet.cn/documents/sort?sortId=10](https://api.timeplanet.cn/documents/sort?sortId=10)