題目
給定一個數(shù)組和一個數(shù)字 n 戒职,在數(shù)組中找到連續(xù)的 n 個平均數(shù)最大的數(shù)字劲绪。
原理
先選中開頭的 n 個數(shù)字爷抓,計(jì)算出和并記錄鞍陨,然后后移窗口(減去最前面的數(shù)再加上后面的一個數(shù))步淹,計(jì)算出新的和,取最大的和诚撵,最后計(jì)算平均數(shù)并返回缭裆。
代碼
public static void main(String[] args) {
System.out.println(getMaxAvg(new int[]{1, 12, -5, -6, 50, 3}, 4));
}
private static double getMaxAvg(int[] arr, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
int max = sum;
for (int i = n; i < arr.length; i++) {
sum = sum - arr[i - n] + arr[i];
max = Math.max(sum, max);
}
return (double) max / n;
}