# 1524. Number of Sub-arrays With Odd Sum ###### tags: `Leetcode` `Medium` `HashMap` `Prefix Sum` Link: https://leetcode.com/problems/number-of-sub-arrays-with-odd-sum/ ## 思路 说是用到hashmap实际上并没有 之所以放在hashmap tag里面是因为和别的hashmap+prefixsum的题很像 随着遍历,记录prefixsum,如果prefixsum是奇数,那么包含这个数的和为奇数的subarray = 前面偶数和的数目,vice versa 所以不需要用map,只需要一个size为2的array就可以 ## Code java ```java= class Solution { public int numOfSubarrays(int[] arr) { int mod = 1000000007; int sum = 0; int[] cnt = new int[2]; cnt[0] = 1; int ans = 0; for(int i=0; i<arr.length; i++){ sum += arr[i]; ans = (cnt[1-sum%2]%mod + ans%mod)%mod; cnt[sum%2]++; } return ans; } } ``` c++ ```cpp= class Solution { public: int numOfSubarrays(vector<int>& arr) { int mod = 1000000007; long cnt[2] = {}; cnt[0] = 1; long ans = 0; long sum = 0; for(int num:arr){ sum+=num; ans = (ans+cnt[1-sum%2])%mod; cnt[sum%2]++; } return (int)ans; } }; ```