华为OD机试C卷-- 滑动窗口最大和(Java & JS & Python & C)

飞码创造者 2024-06-17 11:35:04 阅读 70

获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。

题目描述

有一个N个整数的数组,和一个长度为M的窗口,窗口从数组内的第一个数开始滑动直到窗口不能滑动为止,

每次窗口滑动产生一个窗口和(窗口内所有数的和),求窗口滑动产生的所有窗口和的最大值。

输入描述

第一行输入一个正整数N,表示整数个数。(0<N<100000)

第二行输入N个整数,整数的取值范围为[-100,100]。

第三行输入一个正整数M,M代表窗口的大小,M<=100000,且M<=N。

输出描述

窗口滑动产生所有窗口和的最大值。

题目解析

本题是一个典型的滑动窗口问题,要求在给定的整数数组上使用一个长度为M的窗口进行滑动,并计算每次滑动后窗口内所有数的和,找出这些和中的最大值。

解题步骤如下:

1.初始化一个长度为N的数组nums,用于存储输入的N个整数。

2.初始化一个长度为M的窗口,用于计算窗口内的和。

3.初始化两个变量maxSum和currentSum,maxSum用于记录最大的窗口和,currentSum用于记录当前窗口的和。

4.从数组的起始位置开始,计算前M个数的和,并更新maxSum和currentSum。

5.滑动窗口,向右移动一个位置,同时减去窗口最左边的数,加上



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。