给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。
示例 1 :
输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
1.解题思路
假设有一个数组 N,且 N[i..j] 的和为 K。然后设置一个辅助数组 S,S[n] 表示 N[0] 到 N[n] 的和。
那么可以得到:S[j] - S[i - 1] = K 经过移项后:S[i - 1] =S[j] - K
对于 S[i - 1],有 n 个前缀和为 S[i - 1] 的位置,就有 n 个以 S[j] 为结尾的和为 K 的子数组(这一点就是前缀和思想的核心,比较不好理解。第一次接触这个思想需要多看几遍)
2.源码
原文:https://www.cnblogs.com/xiaoqichaoren/p/12974442.html