# 和为 K 的子数组
- 和为 K 的子数组
来源:力扣(LeetCode) 链接 (opens new window):https://leetcode.cn/problems/subarray-sum-equals-k/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
# 问题
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数
输入:nums = [1,1,1], k = 2
输出:2
输入:nums = [1,2,3], k = 3
输出:2
# 思路
// 思路:前缀和
var subarraySum = function (nums, k) {
//前缀和数组
let presum = [nums[0]];
for (let i = 0; i < nums.length; i++) {
//这里需要注意,我们的前缀和是presum[1]开始填充的
presum[i + 1] = nums[i] + presum[i];
}
//统计个数
let count = 0;
for (let i = 0; i < nums.length; ++i) {
for (let j = i; j < nums.length; ++j) {
//注意偏移,因为我们的nums[2]到nums[4]等于presum[5]-presum[2]
//所以这样就可以得到nums[i,j]区间内的和
if (presum[j + 1] - presum[i] == k) {
count++;
}
}
}
return count;
};