leetcode 560. 和为K的子数组
解题思路
定义pre[i]
下标[0, i]的子数组和
求解方法
下标[j, i]的子数组和为k <=> pre[i]-pre[j-1] == k <==> pre[j-1] == pre[i]-k (注意:j <= i)
通过计算第i个元素前,有多少个pre等于pre[i]-k,可得到以第i个元素结尾的和为k的子数组个数
遍历n个元素,累加和为k的子数组个数,即可得到答案
时间复杂度
O(n)
空间复杂度
O(n)
代码
1 | from collections import defaultdict |