candy leetcode C++

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

Each child must have at least one candy. Children with a higher rating get more candies than their neighbors. What is the minimum candies you must give?

C++

class Solution {
public:
    int candy(vector<int> &ratings) {
        int len=ratings.size();
        if(len==1) return 1;
        int sum=0;
        vector<int> v(len,1);
        for(int i=1;i<len;i++){
            if(ratings[i] > ratings[i-1])
                v[i]=v[i-1]+1;
        }
        for(int i=len-2;i>=0;i--){
            if(ratings[i] > ratings[i+1] && v[i] <= v[i+1])
                v[i]=v[i+1]+1;
        }
        for(int i=0;i<len;i++){
            sum+=v[i];
        }
        return sum;
    }
};

 

posted @ 2018-09-21 11:34  vercont  阅读(157)  评论(0编辑  收藏  举报