643.子数组最大平均数 I

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

**示例 1:**

**输入:**nums = [1,12,-5,-6,50,3], k = 4
**输出:**12.75
**解释:**最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

**示例 2:**

**输入:**nums = [5], k = 1
**输出:**5.00000

**提示:**

- `n == nums.length`
- `1 <= k <= n <= 105`
- `-104 <= nums[i] <= 104`

  1. 入:下标为$i$的元素进入窗口,如果$i<k-1$则重复第一步。窗口元素和每次加$nums[i]$ ;
  2. 更新窗口内元素和的最大值;
  3. 下标$i-k+1$的元素离开窗口,元素和$sum$减去$nums[i-k+1]$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {

public:

    double findMaxAverage(vector<int>& nums, int k) {
        int i=0,max_s=INT_MIN,sum=0;
        for(i;i<nums.size();i++)
        {
          sum+=nums[i];
            if(i<k-1) continue;
            max_s = max(sum,max_s);
            sum -= nums[i-k+1];
        }
        return (double) max_s / k;
    }
};

上次更新 2025-04-04