All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0101_0200.s0135_candy.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0101_0200.s0135_candy;

// #Hard #Array #Greedy #2022_06_24_Time_2_ms_(99.95%)_Space_42.8_MB_(94.28%)

import java.util.Arrays;

/**
 * 135 - Candy\.
 *
 * Hard
 *
 * There are `n` children standing in a line. Each child is assigned a rating value given in the integer array `ratings`.
 *
 * 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.
 *
 * Return _the minimum number of candies you need to have to distribute the candies to the children_.
 *
 * **Example 1:**
 *
 * **Input:** ratings = [1,0,2]
 *
 * **Output:** 5
 *
 * **Explanation:** You can allocate to the first, second and third child with 2, 1, 2 candies respectively. 
 *
 * **Example 2:**
 *
 * **Input:** ratings = [1,2,2]
 *
 * **Output:** 4
 *
 * **Explanation:** You can allocate to the first, second and third child with 1, 2, 1 candies respectively. The third child gets 1 candy because it satisfies the above two conditions. 
 *
 * **Constraints:**
 *
 * *   `n == ratings.length`
 * *   1 <= n <= 2 * 104
 * *   0 <= ratings[i] <= 2 * 104
**/
public class Solution {
    public int candy(int[] ratings) {
        int[] candies = new int[ratings.length];
        Arrays.fill(candies, 1);
        for (int i = 0; i < ratings.length - 1; i++) {
            if (ratings[i + 1] > ratings[i]) {
                candies[i + 1] = candies[i] + 1;
            }
        }
        for (int i = ratings.length - 1; i > 0; i--) {
            if (ratings[i - 1] > ratings[i] && candies[i - 1] < candies[i] + 1) {
                candies[i - 1] = candies[i] + 1;
            }
        }
        int total = 0;
        for (int candy : candies) {
            total += candy;
        }
        return total;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy