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?
import java.util.*;
public class Solution {
public int candy(int[] ratings) {
int n = ratings.length;
if(n==0 || ratings == null)
return 0;
int[] count = new int[n];
int sum=0;
//初始,每个孩子至少有一颗糖
Arrays.fill(count, 1);
for(int i=1; i<n; i++){
if(ratings[i] > ratings[i-1]){
count[i] = count[i-1]+1;
}
}
for(int i=n-1; i>0; i--){
if(ratings[i]<ratings[i-1] && count[i]>=count[i-1]){
count[i-1] = count[i]+1;
}
sum += count[i];
}
sum += count[0];
return sum;
}
}