<p>Given a binary array <code>nums</code> and an integer <code>goal</code>, return <em>the number of non-empty <strong>subarrays</strong> with a sum</em> <code>goal</code>.</p> <p>A <strong>subarray</strong> is a contiguous part of the array.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> nums = [1,0,1,0,1], goal = 2 <strong>Output:</strong> 4 <strong>Explanation:</strong> The 4 subarrays are bolded and underlined below: [<u><strong>1,0,1</strong></u>,0,1] [<u><strong>1,0,1,0</strong></u>,1] [1,<u><strong>0,1,0,1</strong></u>] [1,0,<u><strong>1,0,1</strong></u>] </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> nums = [0,0,0,0,0], goal = 0 <strong>Output:</strong> 15 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= nums.length <= 3 * 10<sup>4</sup></code></li> <li><code>nums[i]</code> is either <code>0</code> or <code>1</code>.</li> <li><code>0 <= goal <= nums.length</code></li> </ul>