首页 > 代码库 > Problem Candy

Problem Candy

Problem Description:

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?

Solution:

 1     public int candy(int[] ratings) { 2          int[] candies = new int[ratings.length]; 3         for (int i = 1; i < ratings.length ; i++) { 4             if (ratings[i]  > ratings[i-1]) { 5                 candies[i] = candies[i-1] + 1; 6             } 7         } 8  9         for (int i = ratings.length - 2; i >= 0; i--) {10             if (ratings[i] > ratings[i+1] && candies[i] <= candies[i+1]) {11                 candies[i] = candies[i+1] + 1;12             }13         }14 15         int sum = 0;16         for (int i = 0; i < candies.length; i++) {17             sum += candies[i];18         }19 20         return sum + candies.length;21     }