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?
class Solution { public: int candy(vector<int> &ratings) { if(ratings.empty())return 0; int n=ratings.size(); int *A=new int[n]; A[0]=1; for(int i=1;i<n;i++) { if(ratings[i]>ratings[i-1])A[i]=A[i-1]+1; else A[i]=1; } int res=A[n-1]; for(int i=n-2;i>=0;i--) { if(ratings[i]>ratings[i+1])A[i]=A[i]>A[i+1]+1?A[i]:A[i+1]+1; res+=A[i]; } return res; } };