给你一个整数数组nums
,返回全部为0
的 子数组 数目。子数组 是一个数组中一段连续非空元素组成的序列。示例:
思路1:
记录上一个非零数字的位置
last
。那么 last+1
就是窗口的左端点。
当子数组右端点在 i
时,子数组左端点可以是 last+1,last+2,…,i,一共有 i−last
个,加入答案。需要注意的是,为了兼容nums=[0,0,0,2,0,0] 这种一开始就是 0 的情况,初始化
last
=−1
。思路2:
我们遍历数组 nums,用变量
cnt
记录当前连续的 0 的个数。那么对于当前遍历到的元素 x
,如果 x
为 0,则 cnt
自增 1,以当前 x
为结尾的全 0 子数组的个数为 cnt
,将其累加到答案中。否则,我们将 cnt
置为 0。遍历结束后,返回答案即可。