LeetCode-in-Dart

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

class Solution {
  int subarraySum(List<int> nums, int k) {
    int tempSum = 0;
    int ret = 0;
    Map<int, int> sumCount = {0: 1};

    for (int i in nums) {
      tempSum += i;

      if (sumCount.containsKey(tempSum - k)) {
        ret += sumCount[tempSum - k]!;
      }

      if (sumCount.containsKey(tempSum)) {
        sumCount[tempSum] = sumCount[tempSum]! + 1;
      } else {
        sumCount[tempSum] = 1;
      }
    }

    return ret;
  }
}