Skip to content

Latest commit

 

History

History

2348

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Given an integer array nums, return the number of subarrays filled with 0.

A subarray is a contiguous non-empty sequence of elements within an array.

 

Example 1:

Input: nums = [1,3,0,0,2,0,0,4]
Output: 6
Explanation: 
There are 4 occurrences of [0] as a subarray.
There are 2 occurrences of [0,0] as a subarray.
There is no occurrence of a subarray with a size more than 2 filled with 0. Therefore, we return 6.

Example 2:

Input: nums = [0,0,0,2,0,0]
Output: 9
Explanation:
There are 5 occurrences of [0] as a subarray.
There are 3 occurrences of [0,0] as a subarray.
There is 1 occurrence of [0,0,0] as a subarray.
There is no occurrence of a subarray with a size more than 3 filled with 0. Therefore, we return 9.

Example 3:

Input: nums = [2,10,2019]
Output: 0
Explanation: There is no subarray filled with 0. Therefore, we return 0.

 

Constraints:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Companies: Google

Related Topics:
Array, Math

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/number-of-zero-filled-subarrays
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    long long zeroFilledSubarray(vector<int>& A) {
        long long ans = 0, N = A.size();
        for (int i = 0; i < N; ++i) {
            if (A[i] != 0) continue;
            long long cnt = 1;
            while (i + 1 < N && A[i + 1] == 0) ++i, ++cnt;
            ans += cnt * (1 + cnt) / 2;
        }
        return ans;
    }
};