не в состоянии решить краевой случай в количестве смежных подмассивов с суммой k - PullRequest
1 голос
/ 01 октября 2019

Я пытался решить проблему «Subarray Sum Equals K» в leetcode. Однако я не могу решить некоторые тестовые случаи с помощью следующего кода:

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

1 Ответ

0 голосов
/ 01 октября 2019

Нашел это решение на 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 решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...