643--子陣列最大平均數(滑動視窗)
阿新 • • 發佈:2022-01-07
對於解題思想
- 對於這樣的題目,首先應該先求和,但是對於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; }