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