Sponsored
Sponsored
This approach involves iterating through the array and counting the length of contiguous segments of zeros. For each segment of zeros with length n
, the total number of zero-filled subarrays is the sum of the first n
natural numbers.
For a segment with length n
, the number of zero-filled subarrays is (n * (n + 1)) / 2
. This formula is derived from the well-known sum formula for the first n
integers.
Time Complexity: O(n), where n
is the size of the input array. This is because we only traverse the array once.
Space Complexity: O(1), since we only use a constant number of extra variables.
1var zeroFilledSubarray = function(nums) {
2 let count = 0;
3 let subarrayCount = 0;
4 for (const num of nums) {
5 if (num === 0) {
6 count++;
7 } else {
8 count = 0;
9 }
10 subarrayCount += count;
11 }
12 return subarrayCount;
13};
The JavaScript solution uses a for-of loop to iterate through the array, counting zeros and propagating the count to calculate the number of zero-filled subarrays.
This approach is slightly variation. We keep track of the number of zero subarrays as we proceed through the array. Whenever a zero is encountered, the count of zero subarrays ending at that position is incremented by the number of zero subarrays ending at the previous position plus one. When a non-zero is encountered, we reset our counter.
Time Complexity: O(n) - traversing each element once to compute the solution.
Space Complexity: O(1) - using only a few extra integer variables for tracking.
A variation of the simple count, where we keep another variable zeroEndsHere
which tracks ongoing segments of zeros. This accumulates into count
as the loop progresses.