Skip to content

Latest commit

 

History

History
37 lines (29 loc) · 1.09 KB

随笔-连续子数组最大平均数.md

File metadata and controls

37 lines (29 loc) · 1.09 KB

题目:给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

示例 1:

输入: [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]。

思路:首先找到第一个k长度的连续子数组的值,然后用此值与其它k长度的连续子数组进行比较;采用滑块式的方法得到下一个k长度的连续子数组。因为是连续的,所以减去最开始那个,加上k长度后的那个值就是新的k长度连续子数组。

代码实现:

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        int max=0; 
        for(int i=0 ; i<k; i++){   //找到第一个k位的值
            max+=nums[i];
        }
        int tmp=max; 
        for(int j=k ; j<nums.length ; j++){  //与max进行比较
            tmp-=nums[j-k];
            tmp+=nums[j];
            if(tmp>max){
                max=tmp;
            }
        }
        return max/(double)k;
    }
}