In an array A
of 0
s and 1
s, 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]
Note:
A.length <= 30000
0 <= S <= A.length
A[i]
is either0
or1
.
题解:
很差的方法,其他方法的case太多。
class Solution {
public:
int numSubarraysWithSum(vector<int>& A, int S) {
int ans = 0;
int n = A.size();
for (int i = 0; i < n; i++) {
int sum = A[i];
int j = i + 1;
while (sum < S && j < n) {
sum += A[j];
j++;
}
if (sum == S) {
ans++;
while (A[j] == 0 && j < n) {
j++;
ans++;
}
}
}
return ans;
}
};