和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
示例 1:
输入:nums = [1,1,1], k = 2
输出:2
1
2
2
示例 2:
输入:nums = [1,2,3], k = 3
输出:2
1
2
2
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var subarraySum = function(nums, k) {
let map = new Map();
map.set(0,1);
let sum = 0;
let res = 0;
for(let i=0;i<nums.length;i++){
sum += nums[i];
if(map.has(sum-k))res += map.get(sum-k);
map.set(sum,map.has(sum)?map.get(sum)+1:1);
}
return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subarray-sum-equals-k