很多子数组问题都采用哈希表解决。
一遍遍历,字典中保留的是前缀和为键值的下标的个数
from typing import *
from collections import defaultdict
class Solution:
'''
记录和为某个值得下标个数
子数组的问题很多都考虑前序和
'''
def subarraySum(self, nums: List[int], k: int) -> int:
dic1 = defaultdict(int)
dic1[0] = 1
cnt = 0
sum = 0
for val in nums:
sum += val
if sum - k in dic1:
cnt += dic1[sum - k]
dic1[sum] += 1
return cnt