1、题目描述
2、分析
这道题其实是一道滑动窗口的应用的题,也就是维护一个大小为K的窗口,计算其中的值,然后再对值进行其他题目需要的计算。滑动窗口的技巧在一些求子串之类的题中很常见。
3、代码
class Solution {
public:
int dietPlanPerformance(vector<int>& calories, int k, int lower, int upper) {
int res=0;
int ans=0;
for(int i=0;i<k;++i){
ans+=calories[i];
}
if(ans>upper) res+=1;
if(ans<lower) res-=1;
int len=calories.size();
for(int j=k;j<len;++j){
ans=ans-calories[j-k]+calories[j];
if(ans>upper) res+=1;
if(ans<lower) res-=1;
}
return res;
}
};
//其实也可以把第一个循环缩小,这样就不需要在循环外面计算ans如下
class Solu