> Uploading knowledge... _
[░░░░░░░░░░░░░░░░░░░░░░░░] 0%
blog logo
> CHICIO CODING_Pixels. Code. Unplugged.

Number of Zero-Filled Subarrays

Leetcode Problem 2348: Number of Zero-Filled Subarrays

Problem Summary

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.

Techniques

  • Count consecutive zeros
  • Use arithmetic progression to calculate subarrays

Solution

function zeroFilledSubarray(nums: number[]): number {
    let numberOfSubarrays = 0
    let currentZeroCount = 0

    for (let i = 0; i < nums.length; i++) {
        if (nums[i] === 0) {
            currentZeroCount++
        } else {
            if (currentZeroCount > 0) {
                // see https://en.wikipedia.org/wiki/Arithmetic_progression
                let arithmeticProgression = (currentZeroCount * (currentZeroCount + 1))/2
                numberOfSubarrays = numberOfSubarrays + arithmeticProgression
                currentZeroCount = 0
            }
        }
    }

    if (currentZeroCount > 0) {
        numberOfSubarrays += (currentZeroCount * (currentZeroCount + 1)) / 2;
    }

    return numberOfSubarrays
}

console.log(zeroFilledSubarray([1,3,0,0,2,0,0,4]))