LeetCode-in-All

560. Subarray Sum Equals K

Medium

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

Constraints:

Solution

func subarraySum(nums []int, k int) int {
	tempSum := 0
	ret := 0
	sumCount := make(map[int]int)
	sumCount[0] = 1

	for _, num := range nums {
		tempSum += num
		if count, ok := sumCount[tempSum-k]; ok {
			ret += count
		}
		sumCount[tempSum]++
	}

	return ret
}