560. 和为 K 的子数组

前缀和+哈希

滚动计算前缀和,同时查找哈希值中有符合前缀和之差等于k的前缀和的出现次数。

最后累加哈希中前缀和的出现次数。

时间复杂度:O(N)
空间复杂度:O(N)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func subarraySum(nums []int, k int) int {
pre, ans := 0, 0
m := map[int]int{}
m[0] = 1

for i := 0; i < len(nums); i++ {
pre += nums[i]

if _, ok := m[pre-k]; ok {
ans += m[pre-k]
}
m[pre] += 1
}

return ans
}

560. 和为 K 的子数组
https://blog.jerrylee.me/2021/09/ee08e0805982.html
作者
Jerry Lee
发布于
2021年9月20日
许可协议