给定 n
个整数,找出平均数最大且长度为 k
的连续子数组,并输出该最大平均数。
示例 1:
输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
注意:
- 1 <=
k
<=n
<= 30,000。 - 所给数据范围 [-10,000,10,000]。
class Solution {
public double findMaxAverage(int[] nums, int k) {
if(nums.length<k || k<1){
return 0;
}
double sum=0.0,temp=0.0;
for(int i=0;i<nums.length;++i){
if(i<k){
sum+=nums[i];
temp=sum;
}else{
temp+=nums[i];
temp-=nums[i-k];
if(temp>sum){
sum=temp;
}
}
}
return sum/k;
}
}
刷水题好爽,稍微用一点动态规划的思想就解决了。
多熟悉API吧。