Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.

Example 1:

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

Note:
The length of the array is in range [1, 20,000].The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].

Solution:

func subarraySum(nums []int, k int) int {
    for i := 1; i < len(nums); i++ {
        nums[i] += nums[i-1]
    }
    
    mp := map[int]int {}
    count := 0;
    mp[0]=1
    
    for i:=0; i < len(nums); i++ {
        if mp[nums[i]-k] != 0 {
            count += mp[nums[i]-k]
        }
        if mp[nums[i]] == 0{
            mp[nums[i]] = 1
        } else{
            mp[nums[i]] += 1
        }
    }
    return count;
}