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:
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.length1 <= n <= 2 * 10^40 <= ratings[i] <= 2 * 10^4func candy(ratings []int) int { n := len(ratings) candies := make([]int, n) for i := 0; i < n; i++ { candies[i] = 1 } for i := 1; i < n; i++ { if ratings[i] > ratings[i-1] { candies[i] = candies[i-1] + 1 } } for i := n - 2; i >= 0; i-- { if ratings[i] > ratings[i+1] && candies[i] <= candies[i+1] { candies[i] = candies[i+1] + 1 } } result := 0 for i := 0; i < n; i++ { result += candies[i] } return result }