
public class AvgArray { public static void main(String[] args) { System.out.println(findMaxAverage(new int[]{1,2,3,-4,24,9,15}, 2)); } /** * 使用滑动窗口,求出数组nums中,长度为k的子数组的最大平均值 * @param nums * @param k * @return */ private static double findMaxAverage(int[] nums, int k) { // 数组的长度 int n = nums.length; if (k == 0 || k > n) { return -1d; } // 定义数组中的和 int sum = 0; // 求出第一个窗口中元素的和 for (int i = 0; i < k; i++) { sum += nums[i]; } int max = sum; // 移动窗口 for (int i = k; i < n; i++) { // 窗口移动一位,添加一位数据,减去一位数据 sum = sum + nums[i] - nums[i - k]; max = Math.max(sum, max); } return 1.0 * max/k; }}