Candy
Total Accepted: 3585 Total Submissions: 22902There 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?
wrong answer:
class Solution {
public:
int candy(vector<int> &ratings) {
if(ratings.size()<1) return 0;
if(ratings.size()<2) return 1;
int sum = 1;
int pre = 1;
int min = 1;
for(int i=1; i<ratings.size(); i++) {
int cur;
if(ratings[i]<ratings[i-1]) {
cur = pre -1;
} else if(ratings[i]>ratings[i-1]) {
cur = pre + 1;
} else {
cur = 1;
}
min = min<cur ? min : cur;
sum += cur;
pre = cur;
}
return sum + (1-min)*ratings.size();
}
};