和雨水的那道题目有点类似,左边右边遍历一下保证符合题目条件即可。
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candy;
const int n = ratings.size();
candy.resize(n);
for(int i=0;i<n;i++){
candy[i]=1;
}
for(int i=1;i<n;i++){
candy[i] = ratings[i]>ratings[i-1]?max(candy[i-1]+1,candy[i]):candy[i];
}
for(int i=n-2;i>=0;i--){
candy[i] = ratings[i]>ratings[i+1]?max(candy[i+1]+1,candy[i]):candy[i];
}
int sum = 0;
for(int i=0;i<n;i++){
sum+=candy[i];
}
return sum;
}
};