本文主要是介绍2019-12-24-LeetCode【643. 子数组最大平均数 I】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
643. 子数组最大平均数 I
给定 n
个整数,找出平均数最大且长度为 k
的连续子数组,并输出该最大平均数。
示例 1:输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-average-subarray-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
注意:
- 1 <=
k
<=n
<= 30,000。 - 所给数据范围 [-10,000,10,000]。
思路
假设前k个是最大的,保持k的滑动窗口,窗口后面每加一个,前面就减一个,取K个连续数的最大值,最后再除以K。
代码
class Solution {
public://这个方法超时// double findMaxAverage(vector<int>& nums, int k) {// double sum_max=(-1)*DBL_MAX;// for(int i=0;i<=nums.size()-k;i++)// {// double sum=0.0;// for(int j=i;j<i+k;j++)// {// sum+=nums[j];// }// sum_max=max(sum,sum_max);// // sum_max=sum;// }// return sum_max*1.0/k;// }double findMaxAverage(vector<int>& nums, int k) {int res=0;for(int i=0;i<k;i++){res+=nums[i];}int temp=res;for(int i=k;i<nums.size();i++){temp=temp-nums[i-k]+nums[i];res=max(res,temp);}return res*1.0/k;}
};
这篇关于2019-12-24-LeetCode【643. 子数组最大平均数 I】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!