一、题目地址
https://leetcode-cn.com/problems/QTMn0o/
二、具体代码
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
// Hash Map + 前缀和
// 时间复杂度O(n)
// 空间复杂度O(n)
var subarraySum = function(nums, k) {
if(nums.length === 0) {
return 0;
}
let map = new Map();
map.set(0, 1);//前缀和为0,出现次数为1
let preSum = 0;
let count = 0;
for(let i=0; i<nums.length; i++) {
preSum += nums[i];
if(map.has(preSum - k)) {
count += map.get(preSum - k);
}
if(map.has(preSum)) {
map.set(preSum, map.get(preSum) + 1);
}else {
map.set(preSum, 1);
}
}
return count;
};
三、补充链接
https://www.bilibili.com/video/BV16K411W78r
四、补充部分
关注公众号:【深漂程序员小庄】:
内含丰富的学习资源和面试经验(不限前端、java),还有学习交流群可加,并且还有各大厂大佬可一起交流学习,一起进步~添加小庄微信,回复【加群】,可加入互联网技术交流群: