LeetCode-643-子数组最大平均数Ⅰ

力扣643题

题目描述:子数组最大平均数Ⅰ

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。

请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。

任何误差小于 10-5 的答案都将被视为正确答案。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-average-subarray-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

image.png

题解思路:

1.定义需要维护的变量sum 和maxAvg
2.定义窗口的首尾端(start, end),然后滑动窗口
3.更新需要 维护的变量(sum 和maxAvg)不断把当前值积累到sum上
4.根据题意知窗口长度固定,用if;窗口首指针前移一个单位保证窗口长度固定,同时更新需要维护的变量(sum)
5.返回答案
class Solution {
    
    
    public double findMaxAverage(int[] nums, int k) {
    
    
        //1.定义需要维护的变量sum 和maxAvg
        double sum = 0;
        double maxAug = Double.NEGATIVE_INFINITY;
        //2.定义窗口的首尾端(start, end),然后滑动窗口
        int start = 0;
        for (int end = 0; end< nums.length;end++){
    
    
            //3.更新需要 维护的变量(sum 和maxAvg)不断把当前值积累到sum上
            sum += nums[end];
            if (end - start+1 == k){
    
    
                maxAug = Math.max(maxAug, sum / k);
            }

            //4.根据题意知窗口长度固定,用if
            //窗口首指针前移一个单位保证窗口长度固定,同时更新需要维护的变量(sum)
            if (end + 1>=k){
    
    
                sum -= nums[start];
                start++;
            }
        }
        //5.返回答案
        return maxAug;
    }
}

猜你喜欢

转载自blog.csdn.net/Miss_croal/article/details/130636362