560. Subarray Sum Equals K

Given an array of integers nums and an integer k, return the total number of subarrays whose sum equals to k.

A subarray is a contiguous non-empty sequence of elements within an array.

Example 1:

Input: nums = [1,1,1], k = 2
Output: 2

Example 2:

Input: nums = [1,2,3], k = 3
Output: 2

def subarraySum(self, nums: List[int], k: int) -> int:
	count, sum_so_far = 0, 0
	sum_frequency = {0: 1}

	for num in nums:
		sum_so_far += num
		if sum_so_far - k in sum_frequency:
			count += sum_frequency[sum_so_far - k]
		
		sum_frequency[sum_so_far] = sum_frequency.get(sum_so_far, 0) + 1

	return count