分糖果

255 阅读1分钟

有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;
    }
};