全 0 子数组的数目

给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。
子数组 是一个数组中一段连续非空元素组成的序列。

  • 输入:nums = [1,3,0,0,2,0,0,4]
    输出:6
    解释:
    子数组 [0] 出现了 4 次。
    子数组 [0,0] 出现了 2 次。
    不存在长度大于 2 的全 0 子数组,所以我们返回 6 。

  • 输入:nums = [0,0,0,2,0,0]
    输出:9
    解释:
    子数组 [0] 出现了 5 次。
    子数组 [0,0] 出现了 3 次。
    子数组 [0,0,0] 出现了 1 次。
    不存在长度大于 3 的全 0 子数组,所以我们返回 9 。

1
2
3
4
5
6
7
8
9
10
11
12
13
var zeroFilledSubarray = function(nums) {
let count = 0, sum = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== 0) {
if (count > 0) sum += count * (count + 1) / 2;
count = 0;
} else {
count++;
}
}
if (count > 0) sum += count * (count + 1) / 2;
return sum;
};