1. 程式人生 > 其它 >643--子陣列最大平均數(滑動視窗)

643--子陣列最大平均數(滑動視窗)

對於解題思想

  • 對於這樣的題目,首先應該先求和,但是對於k個數一起求和,並且要找最大的那個和,這就有難度,首先資料結構沒法直接解決,所有有種滑動視窗的思想。

怎麼進行滑動視窗

  • 首先應該將前k個先進行求和,其次在陣列k的位置開始,往後遍歷,每次視窗的大小始終為k,每次最大的數為減去視窗前邊的一個,加上視窗後邊的一個。

題目

`給你一個由 n 個元素組成的整數陣列 nums 和一個整數 k 。

請你找出平均數最大且 長度為 k 的連續子陣列,並輸出該最大平均數。

任何誤差小於 10-5 的答案都將被視為正確答案。
`

解題

public double findMaxAverage(int[] nums, int k) {
    int n=nums.length;
    int max=0;
    for(int i=0;i<k;i++){
        max+=nums[i];
    }
    int MaxSum=max;
    for(int i=k;i<n;i++){
        max=max-nums[i-k]+nums[i];
        MaxSum=Math.max(max,MaxSum);
    }
    return 1.0*MaxSum/k;
}