1. class Solution:
    2. def subarraySum(self, nums: List[int], k: int) -> int:
    3. import collections
    4. sub_sum_ = collections.defaultdict(int) # 使用字典记录前缀和,方便检索
    5. sub_sum_[0] = 1 # 初始化,方便判断单个元素为k的情况
    6. sum_tmp = 0 # 前缀和初始化
    7. subarray_cnt = 0
    8. for index in range(len(nums)):
    9. sum_tmp += nums[index] # 计算前缀和
    10. subarray_cnt += sub_sum_.get(sum_tmp - k, 0) # 计算当前前缀的情况下,满足情况的子数组的数目
    11. sub_sum_[sum_tmp] = sub_sum_[sum_tmp] + 1 # 记录前缀和
    12. return subarray_cnt