24.长度为M的窗口内数值和的最大值问题
有一个N个整数的数组和一个长度为M的窗口,窗口从数组内的第一个数开始滑动,直到窗口不能滑动为止
每次滑动产生一个窗口 和窗口内所有数的和,求窗口滑动产生的所有窗口和的最大值
输入描述
第一行输入一个正整数N,表示整数个数 0<N<100000
第二行输入N个整数,整数取值范围 [-100,100]
第三行输入正整数M,M代表窗口的大小,M<=100000 并<=N
输出描述
窗口滑动产生所有窗口和的最大值
示例一
输入
6
12 10 20 30 15 23
3
输出
68
查看代码
import java.util.*;
public class Demo24 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[] split = sc.nextLine().split(" ");
int m = Integer.parseInt(sc.nextLine());
int[] ints = new int[n];
for(int i = 0; i < n; i++){
ints[i] = Integer.parseInt(split[i]);
}
int max = 0;
for(int i = 0; i <= n - m; i++){
int sum = 0;
for(int j = i; j < i + m; j++) sum += ints[j];
if(max < sum)
max = sum;
}
System.out.println(max);
}
}
总结:数组下标还是不够熟练理解运用!