966. Binary Subarrays With Sum

Medium
Array
Hash Table
Sliding Window
Prefix Sum

Description

Given a binary array nums and an integer goal, return the number of non-empty subarrays with a sum goal.

A subarray is a contiguous part of the array.

 

Example 1:

Input: nums = [1,0,1,0,1], goal = 2
Output: 4
Explanation: The 4 subarrays are bolded and underlined below:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]

Example 2:

Input: nums = [0,0,0,0,0], goal = 0
Output: 15

 

Constraints:

  • 1 <= nums.length <= 3 * 104
  • nums[i] is either 0 or 1.
  • 0 <= goal <= nums.length

Hints

Hint 1
Can you transform the problem into finding two prefix sums whose difference equals <code>goal</code>?
Hint 2
While iterating through the array, keep track of how many times each prefix sum has appeared so far.
Hint 3
If the current prefix sum is <code>curr</code>, how many previous prefix sums equal to <code>curr - goal</code> exist?

Statistics

Acceptance
68.9%
Submissions
768,985
Accepted
529,738