题目链接
解题思路
1.定义变量count(计算个数,返回值)为0、n(当前nums长度)、preSums(利用利用defaultdict的特性,当presum-k不存在时,返回的是0),其中先定义键为0,值为1、presum为0
2.for range循环遍历n,处理nums数组里,符合条件的数据
2(1).i所在nums数组索引里的值赋值累加给presum;
2(2).presum-k所在preSums数组索引里的值赋值累加给count;
2(3).presum所在preSums数组索引里的值赋值累加1
解题代码
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
count = 0
n = len(nums)
preSums = collections.defaultdict(int)
preSums[0] = 1
presum = 0
for i in range(n):
presum += nums[i]
count += preSums[presum - k]
preSums[presum] += 1
return count