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?
public class Solution {
public int candy(int[] ratings) {
int[] candies = new int[ratings.length];
for(int i=0; i<candies.length; i++){
if(i==0 || ratings[i]<=ratings[i-1]) candies[i] = 1;
else candies[i] = candies[i-1]+1;
}
for(int i=candies.length-2; i>=0; i--){
if(ratings[i]>ratings[i+1]) candies[i] = Math.max(candies[i], candies[i+1]+1);
}
int sum = 0;
for(int n : candies) sum += n;
return sum;
}
}