Subarray Sum Equals K – Python 3 (Week 16 – 04)

class Solution:
    """
    @param nums: a list of integer
    @param k: an integer
    @return: return an integer, denote the number of continuous subarrays whose sum equals to k
    """
    def subarraySumEqualsK(self, nums, k):
        # write your code here
        prefix = [nums[i] for i in range(len(nums))]
        
        for i in range(1, len(prefix)):
            prefix[i] += prefix[i - 1]
        value_to_times, ans = {0: 1}, 0
        
        for i in range(len(prefix)):
            if value_to_times.get(prefix[i] - k) != None:
                ans += value_to_times[prefix[i] - k]
            if value_to_times.get(prefix[i]) == None:
                value_to_times[prefix[i]] = 1
            else:
                value_to_times[prefix[i]] += 1
        
        return ans

Time O(n). Space O(n)>

Leave a comment

Design a site like this with WordPress.com
Get started