声明:只求用最简单的方法通过,不求优化,不喜勿喷
- 前缀和+遍历来做
- 先将前缀和算出来
- 之后遍历数组,一端从头开始,一端从尾部开始,找到j-i是k的就计数+1
- 优化(前缀和用哈希存起来todo
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var subarraySum = function (nums, k) {
let dp = [0];
for (var i = 1; i <= nums.length; i++) {
dp.push(dp[i - 1] + nums[i - 1]);
}
let cnt = 0;
for (var i = 0; i < dp.length - 1; i++) {
for (var j = dp.length - 1; j > i; j--) {
if(dp[j] - dp[i] == k){
cnt++;
}
}
}
return cnt;
};```