题目描述:
给定一个整数数组,计算长度为 k 的连续子数组的最大总和。
示例:
输入:arr=[100,200,300,400]
k=2
输出:700
解释:300+400=700
思路:
固定长度为k的窗口向前移动,新窗口的和 = 前一个窗口的和 + 新进入窗口的值 - 移出窗口的值
代码:
# 给定一个整数数组,计算长度为 k 的连续子数组的最大总和。
#输入:arr=[100,200,300,400]
# k=2
#输出:700
#解释:300+400=700
#思路:
# 固定长度为k的窗口向前移动,新窗口的和 = 前一个窗口的和 + 新进入窗口的值 - 移出窗口的值
def maxSum(arr,k):
n=len(arr)
if n<k:
return -1
#第一个窗口的和
max_sum=0
for i in range(k):
max_sum+=arr[i]
sum=max_sum
for i in range(k,n):
# 新窗口的和 = 前一个窗口的和 + 新进入窗口的值 - 移出窗口的值
sum+=arr[i]-arr[i-k]
max_sum=max(sum,max_sum)
return max_sum
arr=[100,200,300,400]
print(maxSum(arr,2))