解题思路
这道题我们需要稍微转化一下思路,s[j]=s[i-1]+k,将s[j]的出现次数存储到数据中。
相关代码
class Solution {public int numberOfSubarrays(int[] nums, int k) {int a[] = new int[nums.length+1];for(int i=1;i<=nums.length;i++) a[i]=nums[i-1];//s[i]表示的是前i个数中奇数的个数int s[] = new int[nums.length+1];for(int i=1;i<=nums.length;i++)if(a[i]%2==1) s[i]=s[i-1]+1;else s[i]=s[i-1];int cnt=0;int t[] = new int[50010];for(int i=1;i<=nums.length;i++) t[s[i]]++;for(int i=1;i<=nums.length;i++)if(t[s[i-1]+k]>0) cnt=cnt+t[s[i-1]+k]; return cnt;}
}