""" 目标整数 给定一个整数数组和一个目标整数, 统计该数组中和为目标整数的子数组的个数。 要求:子数组是数组中元素的连续非空序列。 """ 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))
评论前必须登录!
注册