"""
目标整数
给定一个整数数组和一个目标整数,
统计该数组中和为目标整数的子数组的个数。
要求:子数组是数组中元素的连续非空序列。
"""
def sub_array_count(nums, target):
"""
计算数组中和为target的子数组数量。
:param nums: 输入的整数数组
:param target: 目标和
:return: 和为target的子数组数量
"""
# 初始化子数组计数器
count = 0
# 初始化当前子数组和
sigma = 0
# 初始化哈希表,用于存储当前和的出现次数,初始情况为0出现1次
ht = {0: 1}
# 遍历数组中的每个元素
for i in nums:
# 更新当前子数组和
sigma += i
# 如果当前和与目标和的差在哈希表中,说明找到了一个和为target的子数组
if sigma - target in ht:
# 更新计数器
count += ht.get(sigma - target)
# 更新哈希表中当前和的出现次数
if sigma in ht:
ht[sigma] = ht.get(sigma) + 1
else:
ht[sigma] = 1
# 返回和为target的子数组数量
return count
# 调用函数并打印结果
print(sub_array_count([5, 6, 9, 4, -1, 3, 6, 5], 9))
评论前必须登录!
注册