將偶數改爲0,奇數改爲1,問題就轉化爲求和爲K的連續子數組
Leetcode-560 和爲K的子數組
class Solution {
public:
int numberOfSubarrays(vector<int>& nums, int k) {
for(int i=0;i<nums.size();i++)
if(nums[i]%2==0)
nums[i]=0;
else
nums[i]=1;
map<int,int> mp;
mp[0]=1;
int sum=0,cnt=0;
for(int i=0;i<nums.size();i++)
{
sum+=nums[i];
if(mp.find(sum-k)!=mp.end())
cnt+=mp[sum-k];
mp[sum]++;
}
return cnt;
}
};