Candy
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) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(ratings.size()<2)
{
return ratings.size();
}
int i;
vector<int> tmp;
for(i=0;i<(ratings).size();i++){
tmp.push_back(1);
}
for(i=1;i<(ratings).size();i++){
if(ratings[i]>ratings[i-1]){
tmp[i]=tmp[i-1]+1;
}
}
for(i=ratings.size()-2;i>=0;i--){
if(ratings[i]>ratings[i+1]&&tmp[i]<=tmp[i+1]){
tmp[i]=tmp[i+1]+1;
}
}
size_t sum=0;
for(i=0;i<tmp.size();i++){
sum+=tmp[i];
}
return sum;
}
};