Skip to content

560. 和为 K 的子数组 ​

  • 题号:560
  • 来源:LeetCode
  • 难度:中等
  • 标签:前缀和 哈希表 子数组
  • 语言:Python
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-29

Python · O(n) 时间 · O(n) 空间 · 更新于 2026-09-29

前缀和配哈希表,统计差为 k 的次数

python
"""
@difficulty medium
@tags 前缀和,哈希表,子数组
@time O(n)
@space O(n)
@note 前缀和配哈希表,统计差为 k 的次数
和为 K 的子数组
lc 560
"""

class Solution:
    def subarraySum(self, nums: List[int], k: int) -> int:
        prefix_sum_count={}
        prefix_sum_count[0]=1
        current_sum = 0
        result = 0
        for num in nums:
            current_sum += num
            
            # 检查是否存在之前的前缀和使得 current_sum - prev_sum = k
            target = current_sum - k
            if target in prefix_sum_count:
                result += prefix_sum_count[target]
            
            # 记录当前前缀和出现的次数
            if current_sum in prefix_sum_count:
                prefix_sum_count[current_sum] += 1
            else:
                prefix_sum_count[current_sum] = 1
        return result

源码:python/leetcode/hot100/10.py


在 GitHub 上查看题目所在目录:lmliheng/algorithm