LeetCode-in-All

560. Subarray Sum Equals K

Medium

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

Example 1:

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

Output: 2

Example 2:

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

Output: 2

Constraints:

Solution

class Solution {
    func subarraySum(_ nums: [Int], _ k: Int) -> Int {
        var result = 0
        var dict = [Int: Int]()
        dict[0] = 1
    
        var sum = 0
        for num in nums {
            sum += num
            if let val = dict[sum - k] {
                result += val
            }
            dict[sum, default: 0] += 1
        }
        return result 
    }
}