和相同的二元子数组
在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组。
示例:
输入:A = [1,0,1,0,1], S = 2
输出:4
解释:
如下面黑体所示,有 4 个满足题目要求的子数组:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
思路+代码+注释:
public int numSubarraysWithSum(int[] A, int S) {
/*
思路:和为S的子数组其实就是1的个数是S个的子数组,从每个数组元素开始往后遍历如果为1那么count++,当count==S时res++,当元素为1并且count==S
时此时1的个数超了那么退出循环,继续遍历下一个元素
*/
int res=0;
for (int i = 0; i <= A.length-S; i++) {
int count=0;
for (int j = i; j < A.length; j++) {
if (A[j]==1)
{
if (count==S)
{
break;
}
count++;
}
if (count==S)
{
res++;
}
}
}
return res;
}