Leetcode - Subarray Sum Equals K Solution

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:

  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -107 <= k <= 107

Solution in Python3

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        def cummulativeSum(nums):
            total = 0
            yield 0
            for i in nums:
                total += i
                yield total
        seen_counts = Counter()
        cummulative_sum = cummulativeSum(nums)
        subarray_with_sum_k = 0
        for i in cummulative_sum:
          pair = i - k
          subarray_with_sum_k += seen_counts[pair]
          seen_counts[i] += 1
        return subarray_with_sum_k

Subscribe to The Poor Coder | Algorithm Solutions

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe