leetcode - 子數組最大平均值

給定 n 個整數,找出平均數最大且長度爲 k 的連續子數組,並輸出該最大平均數。
示例:

輸入:[1,12,-5,-6,50,3], k = 4
輸出:12.75
解釋:最大平均數 (12-5-6+50)/4 = 51/4 = 12.75
提示:
1 <= k <= n <= 30,000。
-所給數據範圍 [-10,000,10,000]

public class Main {
    public static void main(String[] args) {
        int[] in = {1, 12, -5, -6, 50, 3};
        int k = 4;
        int sum = 0;
        int n = in.length;

        // 求出初始K個數組大小的總數
        for (int i = 0; i < k; i++) {
            sum = sum + in[i];
        }
        int maxSum = sum;

        // 遍歷從K開始知道最大值之間的值,求出總體數組中最大的值
        for (int i = k; i < n; i++) {
            //減去最小值,加上最大值,來回和sum值比較,用來更新max值
            sum = sum - in[i - k] + in[i];
            
            // 比較獲取最大值
            maxSum = Math.max(maxSum, sum);
        }
        float averageValue = maxSum * 1.0F / k;
        System.out.println(averageValue);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章