有N个小朋友站在一排,每个小朋友都有一个评分 你现在要按以下的规则给孩子们分糖果: 每个小朋友至少要分得一颗糖果 分数高的小朋友要他比旁边得分低的小朋友分得的糖果多 你最少要分发多少颗糖果?
class Solution {
public:
int candy(vector<int> &ratings) {
int len = ratings.size();
vector<int> candy(len,1);
for(int i=1;i<len;i++)
if(ratings[i] > ratings[i-1])
candy[i] = candy[i-1]+1;
int sum = candy[len-1];
for(int j=len-2;j>=0;j--){
if(ratings[j] > ratings[j+1] && candy[j] <= candy[j+1])
candy[j] = candy[j+1]+1;
sum += candy[j];
}
return sum;
}
};