参考链接:
https://blog.csdn.net/smile_YangYue/article/details/78230074
import java.util.Scanner;
/**
* 题目:
* 给一个数组,里边有N个整数,找长度为K(0<K<N)且平均值最大的子数组,并把这个最大值输出来
输入描述:
* 6 (N的值)
* 1 12 -5 -6 50 30 (含有N个整数的数组)
* 4 (K的值)
输出描述:
* 12.75
* @author Weining
*
*/
public class MaxAverageArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.nextLine());
int[] array = new int[n];
String[] strArray = scanner.nextLine().split(" ");
for (int i=0; i<n; i++) {
array[i] = Integer.parseInt(strArray[i]);
}
int k = Integer.parseInt(scanner.nextLine());
int sum = 0;
for (int i=0; i<k; i++) {
sum += array[i];
}
int max = sum;
for (int i=1; i<=n-k; i++) {
sum = sum + array[i+k-1] - array[i-1];
max = Math.max(max, sum);
}
System.out.println("max: " + (float)max/k);
}
}
6
1 12 -5 -6 50 30
4
max: 17.25
时间复杂度O(n)