0
点赞
收藏
分享

微信扫一扫

[算法导论] 560. 和为 K 的子数组(和为k的连续子数组的个数)

宁静的猫 2022-02-12 阅读 46
算法

0. 题目

1. 暴力枚举 o(n^2) o(1)

2. 前缀和 + 哈希表优化  o(n) o(n)

字典/哈希表 存储 前缀和: 现在的前缀和-曾经的前缀和 = k

## 字典/哈希表 存储 前缀和: 现在的前缀和-曾经的前缀和=k
class Solution(object):
    def subarraySum(self, nums, k):
        pre_sum_dict = collections.defaultdict(int)
        pre_sum_dict[0] = 1 #dict={0:1} 前缀和为0,存在
        c = 0
        pre_sum = 0
        for x in nums:
            pre_sum += x
            if pre_sum - k in pre_sum_dict: #前缀和-target 
                c += pre_sum_dict[pre_sum - k]
            pre_sum_dict[pre_sum] += 1
        return c
举报

相关推荐

0 条评论