There are N children standing in a line.Each child is assigned a rating value.
You are giving candies to these children subjuected 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 minimun candies you must give?
code example:
public static int candy(int [] ratings)
{
int n = ratings.Length;
int[] increment = new int[n];
for(int i = 1,inc=1; i < n; i++)
{
if (ratings[i] > ratings[i - 1])
{
increment[i] = Math.Max(inc++, increment[i]);
}
else
{
inc = 1;
}
}
for(int j = n - 2,inc=1; j >= 0; j--)
{
if (ratings[j] > ratings[j + 1])
{
increment[j] = Math.Max(inc++, increment[j]);
}
else
{
inc = 1;
}
}
int sum = n;
foreach(var i in increment)
{
sum += i;
}
return sum;
}