python - 无法解决总和为 k 的连续子数组中的边缘情况

标签 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
        """
        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

最佳答案

Github 上找到了这个解决方案

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

补充一下为什么您的解决方案不起作用,是因为您的 TotalSum 永远不会重置。因此,您检测到 0 个或 1 个解决方案。

关于python - 无法解决总和为 k 的连续子数组中的边缘情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176718/

相关文章:

javascript - 计算数组中重复的 JavaScript 对象值

关于日期的 C++ 不完整代码,什么是更好的解决方案?

algorithm - 关于多米诺骨牌棋盘的平铺数

python - python 列表的 Yaml 转储使用内联格式而不是连字符 + 空格

python - 从列表列表中获取所有唯一组合,直到第 n 个组合

python - keras预测内存交换无限期增加

arrays - 字典,其中值包含字典,值包含数组

python - 使用整数和 numpy 标量索引 numpy 数组时有什么区别?

python - 如何在 python 中读取定点数

algorithm - 最近最少使用 (LRU) 分页算法总是比 FIFO 更有效?