题目:求一个数组子序列最大的平均数(实际就是求最大和)
思路:利用前一个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很大的时候!