func subarraySum(nums []int, k int) int {
	cnt, n := 0, len(nums)
	sum := make([]int, n+1)
	m := make(map[int]int)
	m[0]++
	for i := 0; i < n; i++ {
		s := sum[i] + nums[i]
		if val, ok := m[s-k]; ok {
			cnt += val
		}
		m[s]++
		sum[i+1] = s
	}
	return cnt
}