求一個數組的子數組的平均值的最大值

參考連接:java

 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).net

相關文章
相關標籤/搜索