560. Subarray Sum Equals K

来源:互联网 发布:win10改mac地址 编辑:程序博客网 时间:2024/06/17 16:47

这道题目使用的是hash+prefix sum的方法,这个也是我第一次知道还有prefix sum这个东西
所谓的prefix sum可以看看链接https://www.jiuzhang.com/qa/1178/

代码中,pre_sum[s - k]就是为了得到是否存在一个prefix sum使得s - p = k ,从而得到一个满足连续子序列的和为k。

class Solution(object):    def subarraySum(self, nums, k):        """        :type nums: List[int]        :type k: int        :rtype: int        """        result, pre_sum, s = 0, {0: 1}, 0        for i in xrange(len(nums)):            s += nums[i]            result += pre_sum.get(s - k, 0)            pre_sum[s] = pre_sum.get(s, 0) + 1        return result