这道题目使用的是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