求一个数组的子数组的平均值的最大值

参考链接:

 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)

猜你喜欢

转载自my.oschina.net/u/3781047/blog/1807718
今日推荐