[LeetCode] 560. Subarray Sum Equals K_Medium

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 560. Subarray Sum Equals K_Medium相关的知识,希望对你有一定的参考价值。

Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.

Example 1:

Input:nums = [1,1,1], k = 2
Output: 2

 

Note:

  1. The length of the array is in range [1, 20,000].
  2. The range of numbers in the array is [-1000, 1000] and the range of the integer k is [-1e7, 1e7].

 

这个题目思路是利用cumulative sum, 前面数字之和去计算. 参考Leetcode 原题Solution.

建一个diction, 记录 sum 出现过的次数, 然后每次用sum - target, 如果存在在dction里面, count += d[sum-target], 最后返回count. 如果直到这个思路之后其实不难, 否则还蛮难想的.

 

class Solution:
    def subarraySum(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
    
    d, count,s = {0:1}, 0,0  # 最开始有0:1 是因为"" 的sum是0, 所以初始为1
    for num in nums:
        s += num
        if s - k in d:
            count += d[s-k]
        if s not in d:
            d[s] = 1
        else:
            d[s] += 1

    return count    

 

以上是关于[LeetCode] 560. Subarray Sum Equals K_Medium的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 560. Subarray Sum Equals K

[leetcode]Map-560. Subarray Sum Equals K

[LeetCode] 560. Subarray Sum Equals K_Medium

[LeetCode] 560.Subarray Sum Equals K_Medium tag: Array, Subarray, prefix Sum

LeetCode 560. Subarray Sum Equals K (子数组之和等于K)

leetcode560. Subarray Sum Equals K