文章目录
- 题目链接
- 解题思路
- 解题代码
题目链接
560.和为 K 的子数组
解题思路
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 = 0n = len(nums)preSums = collections.defaultdict(int)preSums[0] = 1presum = 0for i in range(n):presum += nums[i]count += preSums[presum - k]preSums[presum] += 1 return count