前缀和 + 哈希:子数组和为 K
一、面试常考点
1. 关键等式
若 pre[i] - pre[j] = k,则 j..i-1 区间和为 k。
2. 哈希表作用
记录某前缀和出现次数,快速统计符合条件区间。
二、细节介绍
1. 初始化
map.set(0, 1) 表示空前缀。
2. 处理顺序
先统计答案再更新当前前缀和计数。
三、示例代码
function subarraySum(nums, k) {
const map = new Map()
map.set(0, 1)
let pre = 0
let ans = 0
for (const x of nums) {
pre += x
ans += map.get(pre - k) || 0
map.set(pre, (map.get(pre) || 0) + 1)
}
return ans
}
四、常用应用场景
1. 区间目标匹配
满足目标和/目标差的区间计数。
2. 实时指标检测
流式数据中快速发现满足阈值片段。