
class Solution(object):
def subarraySum(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
# 前缀和+哈希表优化
# 使用哈希表,空间换时间
# 在遍历的过程中构建前缀和
# 使用哈希表或者字典记录每个前缀和出现的次数
# 把presum[i] - presum[j] == k --> 找presum[i]-k是否存在
# 用哈希表存已有的前缀和的值+次数
presum = 0
adict = {}
adict[0] = 1
count = 0
for i in range(len(nums)):
presum += nums[i]
if presum - k in adict:
count += adict[presum - k]
if presum not in adict:
adict[presum] = 1
else:
adict[presum] +=1
return count
该篇博客介绍了如何通过前缀和与哈希表的优化技巧,有效地解决寻找数组中和为指定值的连续子数组个数的问题。代码实现中,博主展示了如何在遍历过程中构建并利用哈希表存储前缀和,从而减少重复计算,提高算法效率。

被折叠的 条评论
为什么被折叠?



