参考连接:java
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).net