题目:求一个数组子序列最大的平均数(实际就是求最大和)
思路:利用前一个sum的信息
时间复杂度:O(n)
代码:
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int sum = 0;
for (int i = 0; i < k; i++)
sum += nums[i];
double maxSum = sum;
for (int i = k; i < nums.size(); i++) {
sum = sum - nums[i - k] + nums[i];
maxSum = maxSum>sum? maxSum:sum;
}
return maxSum/k;
}
};
收获:
通过减开头和增加下一项省下了很多求和时间,特别是k很大的时候!
本文介绍了一种求解数组中子序列最大平均数的问题,采用动态更新子序列和的方法,实现了时间复杂度为O(n)的高效算法。
3098

被折叠的 条评论
为什么被折叠?



