135. Candy

来源:互联网 发布:南昌大学软件学院吧 编辑:程序博客网 时间:2024/06/16 06:36

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?

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


原创粉丝点击