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: Give [2,1,2] candies.
```
**Example 2:**
```
Input: ratings = [1,2,2]
Output: 4
Explanation: Give [1,2,1] candies; third child gets 1 because its rating is not greater than the second child.
```