‘’’
贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0-N的箱子,每个箱子上面贴有一个数字.
阿里巴巴念出一个咒语数字k(k<N),找出连续k个宝箱数字和的最大值,并输出该最大值。
输入描述
第一行输入一个数字字串,数字之间使用逗号分隔,例如: 2,10,-3,-8,40,5。
1≤字串中数字的个数≤100000
-10000≤每个数字≤10000
第二行输入咒语数字,例如: 4,咒语数字大小小于宝箱的个数
输出描述
连续k个宝箱数字和的最大值,例如: 39
示例1:
输入
2,10,-3,-8,40,5
4
输出
39
示例2:
输入
8
1
输出
8
思路
1:题目最关键的一句话:找出连续k个宝箱数字和的最大值。
2:这不就是滑动窗口,长度为k的最大窗口和,leetcode 原题,最基础的滑动窗口题目
‘’’
arr = [int(x) for x in input().split(“,”)]
k = int(input())
window_sum = 0
for i in range(k):
window_sum += arr[i]
result = window_sum
for i in range(1, len(arr) - k + 1):
window_sum -= arr[i - 1]
window_sum += arr[i + k - 1]
result = max(result, window_sum)
print(result)