统计和为目标值的子数组数量——前缀和+哈希表高效解法详解
题目描述
给定一个二元数组 nums
(数组元素只包含0和1),以及一个整数 goal
,请你统计并返回有多少个非空的子数组,其元素和恰好等于 goal
。
说明:
- 子数组是数组中一段连续的元素序列。
- 数组中只包含0和1。
示例:
输入: nums = [1,0,1,0,1], goal = 2
输出: 4
解释:
满足条件的子数组分别是:
[1,0,1], [1,0,1,0], [0,1,0,1], [1,0,1]
解题分析
这道题的关键是如何快速统计和为指定值的连续子数组个数。
暴力解法
我们可以枚举所有可能的子数组,用两层循环计算每个子数组的和,再判断是否等于目标 goal
。
- 时间复杂度:O(n²)
- 空间复杂度:O(1)
显然,暴力解法效率较低,尤其对于大数据量时,可能超时。