做一个网上商城网站建设费用多少钱,自己做网站新手入门,网站如何导入百度地图,北京做网站的价格题干
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组#xff0c;并输出该最大平均数。
任何误差小于 10^-5 的答案都将被视为正确答案。
示例1#xff1a; 输入#xff1a;nums [1,12,-5,-6,50,3], k 4
输出并输出该最大平均数。
任何误差小于 10^-5 的答案都将被视为正确答案。
示例1 输入nums [1,12,-5,-6,50,3], k 4
输出12.75
解释最大平均数 (12-5-650)/4 51/4 12.75示例2 输入nums [5], k 1
输出5.00000 提示 n nums.length1 k n 105-10^4 nums[i] 10^4 解题思路 这道题是典型的滑动窗口类型的题目。以示例一入手来看题目k4每4个数为一组由于题目中所说是连续子数组我们可以将前4个数的和sum算出来当作最大值max然后这个可以容纳4个数的窗口向右移动一位将原本的总和sum减去第一个数加上下一个数得到下一组子数组的和并将其与最大值max作比较取更大的值做max。以此类推得到所有连续子数组的和并得到最大的和max。 需要注意我们得到的和max是int型的需要通过 max * 1.0 来将其变为double型确保除法可以得到正确的结果。
AC代码
class Solution {public double findMaxAverage(int[] nums, int k) {int sum 0;int n nums.length;for(int i0;ik;i){sum sum nums[i];}int max sum;for(int ik;in;i){sum sum - nums[i-k] nums[i];max Math.max(max,sum);}return 1.0 * max / k;}
}