# 560.和为K的子数组
# 题目
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
示例 1 :
输入:nums = [1,1,1], k =
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况
# 个人题解
定义map{0:1}(边界条件),count计数,preSum来累加
通过在循环中preSum += nums[i] 我们可以得到,如果map[preSum-k]存在,那么说明这一次相加的值后累加的值满足了条件,那么我们的count即可相加一次
# 具体代码
var subarraySum = (nums, k) => {
if (nums.length === 0) return 0
let map = { 0: 1 }
let prefixSum = 0
let count = 0
for (let i = 0; i < nums.length; i++) {
prefixSum += nums[i]
if (map[prefixSum - k]) {
count += map[prefixSum - k];
}
if (map[prefixSum]) {
map[prefixSum]++
} else {
map[prefixSum] = 1
}
}
return count
}