和为某个值的连续子序列个数
利用区间的减法:
[b, c] = [a, c] - [a, b]
def count_sublists_with_sum(lst, target_sum):
count = 0
cum_sum = {0: 1} # 从0开始,表示空子列表的和为0
current_sum = 0
for num in lst:
current_sum += num
# 如果(current_sum - target_sum)已经在字典中,说明存在子列表和为目标值
if (current_sum - target_sum) in cum_sum:
count += cum_sum[current_sum - target_sum]
# 如果当前元素的累积和不在字典中,添加进去
if current_sum not in cum_sum:
cum_sum[current_sum] = 1
else:
# 如果已经在字典中,增加出现的次数
cum_sum[current_sum] += 1
return count
# 示例使用
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 9
print(count_sublists_with_sum(my_list, target)) # 输出满足条件的子列表个数