题目描述:
- 有一个N个整数的数组和一个长度为M的窗口。
- 窗口从数组内的第一个数开始滑动,直到窗口不能滑动为止。
- 每次滑动产生一个窗口 和窗口内所有数的和。
- 求窗口滑动产生的所有窗口和的最大值。
输入描述:
- 第一行输入一个正整数N,表示整数个数 0<N<100000。
- 第二行输入N个整数,整数取值范围 [-100,100]。
- 第三行输入正整数M,M代表窗口的大小,M<=100000 并<=N。
输出描述:
- 窗口滑动产生所有窗口和的最大值
示例
输入:
6
12 10 20 30 15 23
3
输出:
68
def find_max_window(nums: int, array: list, window_size:int):
"""
找出窗口最大值
:param nums: 数据总数
:param array: 数据数组
:param window_size: 窗口大小
:return: 最大和
"""
if window_size > nums:
raise ValueError("window size must be less than nums")
if window_size == nums:
return sum(array)
left_point = 0
right_point = window_size
max_num = 0
while right_point <= nums:
max_num = max(max_num, sum(array[left_point: right_point]))
left_point += 1
right_point += 1
return max_num