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

2588. 统计美丽子数组数目(前缀和)
#### 题目 ![屏幕截图 20250306 165542.png](https://api.timeplanet.cn/documents/articlePicture/11741251352084589.png) #### 解题思路 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; } }; ``` ![屏幕截图 20250306 170923.png](https://api.timeplanet.cn/documents/articlePicture/11741252218219420.png) #### 完结撒花 前缀和就那么轻松学会了。我的力扣主页:[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)