给一个整数数组,找出平均数最大且长度为k的下标连续的子数组,并输出该最大平均数。

    输入:[1,12,-5,-6,50,3],k=4
    输出:12.75
    最大平均数(12-5-6+50)/4

    1. public class AvgArray {
    2. public static void main(String[] args) {
    3. System.out.println(findMaxAverage(new int[]{1, 12, -5, -6, 50, 3}, 4));
    4. }
    5. private static double findMaxAverage(int[] nums, int k) {
    6. int sum = 0;
    7. int n = nums.length;
    8. //先统计第一个窗口的和
    9. for (int i = 0; i < k; i++) {
    10. sum += nums[i];
    11. }
    12. int max = sum;
    13. for (int i = k; i < n; i++) {
    14. sum = sum - nums[i - k] + nums[i];
    15. max = Math.max(max, sum);
    16. }
    17. return 1.0 * max / k;
    18. }
    19. }