Leetcode 643:子数组最大平均数 (C++)
2018-03-30 20:47
946 查看
题目要求:给定
例:输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
思路:由于k值给定,因此只需要求出数组中连续k个和最大的数。
首先将前k个数的和保存到tmp中,res始终保存当前最大和。
将数组后面的数一个一个加到tmp中,相应的也要减去tmp中保存的第一个数。
比较tmp和res的大小,及时更新res。
代码:
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
double res=0;
int tmp=0;
for(int i=0;i<nums.size();i++){
if(i<k){
tmp+=nums[i];
res=tmp;
continue;
}
tmp=tmp+nums[i]-nums[i-k];
if(tmp>res)
res=tmp;
}
return res/k;
}
};
n个整数,找出平均数最大且长度为
k的子数组,并输出该最大平均数。
例:输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
思路:由于k值给定,因此只需要求出数组中连续k个和最大的数。
首先将前k个数的和保存到tmp中,res始终保存当前最大和。
将数组后面的数一个一个加到tmp中,相应的也要减去tmp中保存的第一个数。
比较tmp和res的大小,及时更新res。
代码:
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
double res=0;
int tmp=0;
for(int i=0;i<nums.size();i++){
if(i<k){
tmp+=nums[i];
res=tmp;
continue;
}
tmp=tmp+nums[i]-nums[i-k];
if(tmp>res)
res=tmp;
}
return res/k;
}
};
相关文章推荐
- LeetCode-643:Maximum Average Subarray I (k个元素的最大子数组)
- 最大子数组问题-c++代码实现及运行实例结果
- 最大子数组问题-暴力求解-c++代码实现及运行实例结果
- Maximum Subarray 最大子数组和(连续)@LeetCode
- [leetcode 53] Maximum Subarray----最大子数组的和
- LeetCode 152. Maximum Product Subarray--连续子数组最大乘积
- 【小红书2017年笔试】求一个数组中平均数最大的子数组
- leetcode_53. Maximum Subarray-子数组最大和
- [Leetcode-53]Maximum Subarray 最大子数组和
- leetcode之数组类之区间类-----OJ 56/57/435/239 重叠区间个数 合并区间 插入区间 滑动窗口最大值
- [LeetCode] Maximum Product Subarray 求最大子数组乘积
- C++创建不定长数组并求连续子数组最大和/排序
- 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】
- LeetCode问题53:最大的连续子数组和
- leetCode 53.Maximum Subarray (子数组的最大和) 解题思路方法
- 算法 - 求子数组的最大和(C++)
- [LeetCode] Largest Sum of Averages 最大的平均数之和
- C++数组排成最大的数(数组,算法,排列)
- C++习题 对象数组求最大值
- LeetCode-Maximum Product Subarray-最大乘积子数组-情况判断