Python 无法解决具有和k的连续子阵列数的边情况

Python 无法解决具有和k的连续子阵列数的边情况,python,arrays,algorithm,sum,sub-array,Python,Arrays,Algorithm,Sum,Sub Array,我一直在试图解决leetcode上的“子数组和等于K”问题。但是,我无法使用以下代码解决某些测试用例: from collections import defaultdict class Solution(object): def subarraySum(self, nums, k): """ :type nums: List[int] :type k: int :rtype: int """

我一直在试图解决leetcode上的“子数组和等于K”问题。但是,我无法使用以下代码解决某些测试用例:

from collections import defaultdict
class Solution(object):
    def subarraySum(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        sumTable = defaultdict(lambda : 0) 

        count = 0
        totalSum = 0
        for i in range(0,len(nums)):
            totalSum += nums[i]
            if(totalSum==k):
                count += 1
            sumTable[totalSum] += 1

        for key in sumTable:
            # print(key)
            if (key-k) in sumTable:
                    count += sumTable[key-k]

        return count
在上找到此解决方案


再加上为什么你的解决方案不起作用,是因为你的总和永远不会重置。因此,您可以检测到0或1个解决方案。

嗯,是否将整个代码放入一个代码块?
import collections
class Solution(object):
    def subarraySum(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        result = 0
        accumulated_sum = 0
        lookup = collections.defaultdict(int)
        lookup[0] += 1
        for num in nums:
            accumulated_sum += num
            result += lookup[accumulated_sum - k]
            lookup[accumulated_sum] += 1
        return result