Skip to content

560. Subarray Sum Equals K

Summary

Solution Approach Explanation (1-minute) Time Complexity Space Complexity
Brute Force Check all possible subarrays and calculate their sums. \(O(n^2)\): Two nested loops \(O(1)\): No extra space used
Prefix Sum + Hashmap Use a hashmap to store prefix sums and their counts. Check for complement in each step. \(O(n)\): Single iteration \(O(n)\): Hashmap stores prefix sums

Implementation

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        # key:value = prefix_sum: count
        prefix_sums = {0: 1}
        counts = 0

        curr_sum = 0
        for i, num in enumerate(nums):
            curr_sum += num
            complement = curr_sum - k
            # Add up 
            if complement in prefix_sums:
                counts += prefix_sums[complement]
            # Update prefix_sums
            if curr_sum in prefix_sums:
                prefix_sums[curr_sum] += 1
            else:
                prefix_sums[curr_sum] = 1
        return counts


```