经典的模式,前后扫描即可得结果:
class Solution {
public:
int candy(vector<int> &ratings) {
int n=ratings.size();
vector<int> plus(n);
for(int i=1,cur=1;i<n;i++){
if(ratings[i]>ratings[i-1])
plus[i]=max(cur++,plus[i]);
else
cur=1;
}
for(int i=n-2,cur=1;i>=0;i--){
if(ratings[i]>ratings[i+1])
plus[i]=max(cur++,plus[i]);
else
cur=1;
}
return accumulate(&plus[0],&plus[0]+n,n);
}
};