leetcode-643. 子数组最大平均数 I
文章目录
- 二 解法
- 2.1 每次都重新计算
- 2.2 使用窗口
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。任何误差小于 10-5 的答案都将被视为正确答案。
二 解法
2.1 每次都重新计算
超时
public double findMaxAverage(int[] nums, int k) {double res = 0D;for (int i = 0; i <= nums.length-k; i++) {double curr = 0D;for (int j = i; j < k + i; j++) {curr += nums[j];}curr = curr / k;res = Math.max(res, curr);}return res;}
2.2 使用窗口
6ms
public double findMaxAverage(int[] nums, int k) {double res = -Integer.MAX_VALUE;int start = 0;int end = 0;double acc = 0.0D;while (end < nums.length) {acc += nums[end];if (end - start + 1 < k) {} else {if (end - start + 1 > k) {acc -= nums[start];start = start + 1;}res = Math.max(res , acc / k);}end += 1; }return res;}