题目地址:
https://www.lintcode.com/problem/maximum-average-subarray/description
给定一个长度为 n n n的数组 A A A,求其所有长度为 k k k的子数组的最大平均值。题目保证 k ≤ n k\le n k≤n。
直接枚举。代码如下:
public class Solution {
/**
* @param nums: an array
* @param k: an integer
* @return: the maximum average value
*/
public double findMaxAverage(int[] nums, int k) {
// Write your code here
double sum = 0;
for (int i = 0; i < k; i++) {
sum += nums[i];
}
double res = sum / k;
for (int i = k; i < nums.length; i++) {
sum -= nums[i - k];
sum += nums[i];
res = Math.max(res, sum / k);
}
return res;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。