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?

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;
    }
}
comments powered by Disqus