930. 和相同的二元子陣列 字首和
阿新 • • 發佈:2021-07-08
給你一個二元陣列 nums ,和一個整數 goal ,請你統計並返回有多少個和為 goal 的 非空 子陣列。
子陣列 是陣列的一段連續部分。
示例 1:
輸入:nums = [1,0,1,0,1], goal = 2
輸出:4
解釋:
如下面黑體所示,有 4 個滿足題目要求的子陣列:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
示例 2:
輸入:nums = [0,0,0,0,0], goal = 0
輸出:15
提示:
1 <= nums.length <= 3 * 104
nums[i] 不是 0 就是 1
0 <= goal <= nums.length
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/binary-subarrays-with-sum
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
class Solution { public: int numSubarraysWithSum(vector<int>& nums, int goal) { int sum = 0; map <int, int> cnt; int ans = 0; for (int num : nums) { cnt[sum]++; sum += num; ans += cnt[sum - goal]; } return ans; } };