16. Binary Subarrays With Sum
In an array A of 0s and 1s, how many non-empty subarrays have sum S?
Example 1:
Input: A = [1,0,1,0,1], S = 2
Output: 4
Explanation:
The 4 subarrays are bolded below:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]Solution: (Sliding Window)
Similar Approach to the Count Nice Subarrays Edge case: S = 0 Finding the number of zero in between ones and calculation number of sub arrays
class Solution
{
public:
int numSubarraysWithSum(vector<int> &A, int S)
{
vector<int> v;
v.push_back(-1);
for (int i = 0; i < A.size(); i++)
{
if (A[i] == 1)
{
v.push_back(i);
}
}
v.push_back(A.size());
int res = 0;
if (S == 0)
{
for (int i = 1; i < v.size(); i++)
{
int dif = v[i] - v[i - 1] - 1;
res += dif * (dif + 1) / 2;
}
return res;
}
for (int i = 1; i < v.size() - 1; i++)
{
int j = i + S - 1;
if (j < v.size() - 1)
{
int ll = v[i] - v[i - 1];
int rl = v[j + 1] - v[j];
res += ll * rl;
}
}
return res;
}
};Time Complexity: O(n) Space Complexity: O(n)
Solution: (Prefix Sum)
Time Complexity: O(n)
Previous15. Count Number of Nice SubarraysNext17.Number of Substrings Containing All Three Characters
Last updated
Was this helpful?